Lecture 3 - Backprop and Neural Networks
3-1. Named Entity Recognition(NER) : 개체명 인식
•
문장에서 인명, 지명 등 고유명사를 파악하기 위해 사용됨
•
문맥들이 모두 고유명사를 기준으로 동사와 기타 단어들이 관계를 맺는 구조를 가지기 때문에 고유명사를 파악하는 것이 중요하다.
•
NER task는 위와같은 Window Classification 방식 말고도 Conditional Random Field(CRF)나 Recurrent Neural Network(RNN)과 같은 연속적인 모델이 이용될 수도 있음.
•
NER의 한계
1.
Entity의 경계를 정하기 어렵다.
2.
Entity인지 Entity가 아닌지 구분하기 어렵다.
3.
Entity 분류가 모호하며, 문맥에 의존한다.
•
파악하고자 하는 단어가 문맥상 인물이 될 수도 있고, 조직이 될 수도 있는 애매모호한 단어들이 있을 때는 문맥을 고려하여야 한다!
◦
→ 중심 단어(center word)를 기준으로 문맥(context word)을 고려하는 Window Classification 방법론 제안
3-2. Matrix Calculus ( Jacobians )
•
Jacobian Matrix : Generalization of the Gradient
•
X1 ~ Xn 까지 input → 1개의 output
•
n개의 각각의 input으로 미분하여 하나의 벡터로 만들어준다.
•
마찬가지로 matrix에서도 적용 → input은 n개로 같지만, output은 m이다. matrix에서 미분을 한 값.
•
Chain Rule
•
h식을 x에 대해 미분한다면,
1.
매개변수 z로 미분
2.
z식을 다시 x로 미분
•
H = (z를 input으로 집어넣어 활성화함수를 적용해 나온 식)
•
z로 미분하면 n*n matrix 형태로 나온다.
•
hi는 f(zi)로 나타낼 수 있다.
•
zi와 zi가 i = j일 때, 미분한 값이 나오고, 그렇지 않을 경우에는 0
•
행렬로 표현시 위와 같은 대각 행렬로 나온다.
•
window classification에서 손실 함수를 최소화하기 위한 미분과정의 한 부분으로 사용된다.
1.
(Wx + b를 x로 미분한 값) = (가중치 W)
2.
(b로 미분한 값) = (항등행렬)
3.
(u로 미분한 값) = ht
•
Neural Net loss function의 gradient를 계산
1.
식 h에서 z = Wx + b로 치환
•
chain rule을 사용
1.
s를 h로 미분
2.
h를 z로 미분
3.
z를 b로 미분
→ 최종적으로 s를 b로 미분한 값이 나오게 된다.
•
미분한 값에 각각의 값을 대입하기
•
모든 parameter 값들을 업데이트 해야함. ⇒ W에 대해서도 미분
•
S를 W로 미분하는 과정도 chain rule로 진행
•
앞서 했던 계산 과정과 동일
•
(파란색 부분) = (델타) = (local error signal)
•
계산 과정을 그대로 matrix로 확장
•
n*1 1*m 계산이 되므로 외적
3-3. Backpropagation
Neural Network 과정 진행
1.
FeedForward : x vector 가 Weight Matrix 와 곱해져서, output vector를 만들어 낸다.
2.
BackPropagation : output vector 를 Weight matrix 에 대해 미분함. FeedForward 과정을 통해 나온 predict 값과 실제 값을 통해, error signal vector를 만들고, Chain Rule 을 이용해 가중치를 업데이트한다.
< Backpropagation 과정 풀이 >
•
Downstream Gradient = Local Gradient * Upstream Gradient
주요 연산에 대한 역전파 분해
•
Computation Graph = ‘값을 그래프 노드 위에 위치시킨다.‘
Backpropagation의 문제점
•
Vanishing Gradient : sigmoid 함수의 미분값의 범위가 (0, 1/4] 가 되어, 작은 값이 계속적으로 곱해지는 것이기 때문에 gradient 값이 0으로 사라지게 됨 → Activation Function, Weight Initialization 으로 해결
•
Dying ReLU : input으로 음수가 들어오게 되면, Backpropagation 진행 시 0 값이 곱해지게 되어 사라져 버리는 문제가 발생 → BatchNormalization, Optimization 으로 해결가능
•
Overfitting : 가지고 있는 데이터에 지나치게 맞추어 학습하여, 새로운 데이터셋에 대해 제대로 예측하지 못하게 된다. → Regularization, Dropout 으로 해결가능
•
문제점 해결 방법 (방지 방법)
1.
Regularization : 모델이 복잡해질수록 penalty를 크게 주도록, 목적 함수에 항을 하나 더 추가해준다.
2.
Vectorization : (word vector를 하나씩 돌아가면서 W와 내적하는 것)이 아니라, (word vector 집합을 하나의 행렬로 만든 뒤 W와 내적)
3.
Activation Function : 다양한 activation function을 활용하여 성능을 개선시킨다.
4.
Weight Initialization : 학습 전 weight를 초기화시켜주어 Gradient Vanishing이나 Gradient Exploding을 방지한다.
5.
Optimizer : 적절한 optimizer를 사용하여 최적 값을 찾아간다.
6.
Learning Rate : 적절한 learning rate 사용 및 scheduler 사용하기