Processing math: 100%
본문 바로가기
대학원 이야기/CS224N : NLP with Deep Learning

[CS224N] Lecture 3 - Neural Networks

by misconstructed 2020. 8. 12.
728x90

Classification setup & notation

  • xi : inputs (d-dimension vector)
  • yi : C개의 class 중, xi 에 해당하는 class(label)

{xi,yi}Ni=1

Classifier

  • classification : x 값들이 주어졌을 때, y 값에 따라서 영역을 구분할 수 있는 선을 구해야 한다.
    • classifier : 영역을 구분하는 선
  • softmax, logistic regression 등의 linear classifier(선으로 두 영역을 구분)를 사용한다. 
    • softmax : 입력값을 probability distribution으로 제공한다.
    • 각 x 에 대해서 아래 정의한 p(y|x) 를 예측해야 한다.

p(y|x)=exp(Wyx)Cc=1exp(Wcx)=exp(fy)Cc=1exp(fc)

  • fy : x가 class y 에 속할 확률

Training

  • 모델의 최종 목표는 정확한 클래스를 예측하는 것(classifier 이기 때문에)이다.
    • 그러므로, 정확한 클래스에 대해서 가장 높은 probability(확률)를 제공해야 한다.
    • 그러므로, logp(y|x) 의 값을 최소화해야 한다.
      • logp(y|x) 의 값을 최대화해야 한다.
      • p(y|x) 의 값을 최대화해야 한다.
    • log probability를 사용하는 경우 손실함수를 적용하고 계산하기 편리해진다.

Cross-entropy

  • p : true probability distribution
  • q : computed model probability
    • q(c) : our estimated model

H(p,q)=Cc=1p(c)logq(c)

  • classification 의 경우는 특별하게 p=[0,0,...,0,1,0,...,0] 으로 표현된다.
    • p(c) 는 올바른 클래스의 경우에만 1, 아닌 경우는 모두 0을 제공
    • 그러므로, 올바른 결과를 제공하는 경우, logq(c) 가 결과로 제공됨
  • cross-entropy loss over full dataset : J(θ)=1NNi=1log(efyiCc=1efc)

Gradient descent

  • 전체 파라미터(parameter) θ 를 각 단어들을 나타내는 word vector 들로 구성되었다고 정의하면,

[w1...wn]

  • 손실함수의 gradient는 다음과 같이 정의할 수 있다.

θJ(θ)=[w1..wn]

  • 위의 gradient 를 사용해서 W의 값을 수정한다.
    • W의 값을 수정하면, class를 구분하는 선을 움직이는 것과 같다.

Neural Network classifiers

  • 선으로만 구분(기존의 방식)하기 어려운 문제들이 생겨났다.
    • 조금 더 complicated classifier 가 필요했다. = multi-layer neural network를 사용

Neural computation

  • x0,x1,...,xn : 다른 뉴런으로부터의 입력
  • w0,w1,...,wn : 각 입력에 대한 가중치
  • b : 해당 유닛의 편향(bias)
  • f : activation function
    • non-linearity 를 제공하기 위해 사용한다.
    • f 를 사용하지 않는 경우, 아무리 많은 층을 거쳐도 최종적으로 Linear transform 이 된다.
  • 여러개의 유닛을 함께 사용해보자!
    • hidden layer를 사용해서 각각의 유닛들이 스스로 유의미한 요소를 학습할 수 있도록 한다.
      • 최종 classifier가 올바른 결정을 내릴 수 있도록 하는 요소들을 학습한다.
      • cross-entropy loss를 최소화하는 방향으로 전체 유닛을 학습한다.

multilayer neural network

Named Entity recognition (NER)

Named Entity Recognition(NER) example

  • 주어진 text에 대해서 이름을 찾아서 classify 
    • 해당 이름을 people, places, organization 등으로 분류
  • task 해결 방법
    1. 각 단어에 한번씩 접근하면서 classifier를 통해 class를 할당
      • 여러개의 단어로 구성된 이름의 경우, 연속적으로 동일한 class를 부여한 경우 하나의 entity로 인식
      • 해당 방법은 실생활에서 사용하기에 한계가 있음
        • ex) "First National Bank" : 은행의 이름이 "First National Bank" 인지, "National Bank" 이고 "first"는 그냥 첫 글자라서 대문자로 명시한건지 알 수 없다.
        • 실제로 entity 인지 확인하는 과정에도 어려움이 있다.
          • ambiguous 한 단어들이 많기 때문이다.
    2. context 내에서 동작하는 word classifier를 사용
      • 인접한 단어들을 통해서 단어의 ambiguity를 해결한다.
      •  한 window 내에 위치하는 단어들의 word vector 들을 concatenate 
        • 한 word vector가 d-dimension인 경우, 새로 생성한 벡터는 5d-dimension이 된다.
      • 새로 생성된 벡터를 softmax의 입력으로 제공해서 probability를 계산한다.
        • 이전에 배운 cross-entropy loss 도 함께 사용한다.
        • 가운데 위치하는 단어가 location entity면 high score, 아닌 경우 low score를 제공
        • stochastic gradient descent 를 적용해서 θnew=θoldαθJ(θ) 를 계산해서 파라미터를 업데이트 한다.
      • 3-layer neural net에서 해당 task를 해결해본다.
        • 중간층을 통해서 단어들 사이의 non-linear 한 관계를 학습할 수 있다.

3-layer neural net

θJ(θ) 를 계산하는 방법

  • n개의 input, 1개의 output인 경우 : f(x)=f(x1,x2,...,xn)

fx=[fx1,fx2,...,fxn]

  • n개의 input, m개의 output 인 경우 : f(x)=[f1(x1,x2,...,xn),...,fn(x1,x2,...,xn)]
    • matrix of partial derivative = Jacobian matrix

fx=[f1x1...fmx1......f1xn...fmxn]

(fx)ij=fixj

  • h=f(z) 일 때, hz 를 계산하면 다음과 같다.
    • $ \frac{\partial h}{\partial z} = \frac{\partial f'(z_i)}{\partial z} $ 이므로,

hz=f(zi)z=(f(z1)...0......0...f(zn))=diag(f(z))

 

 

728x90

댓글