Search
🤖

[11/17(목)] Lecture 3 : Backprop and Neural Networks

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 사용하기