연세대 인공지능학회 YAI

[Deep Learning for Computer Vision] Training Neural Network / Recurrent Network / Attention 본문

강의 & 책

[Deep Learning for Computer Vision] Training Neural Network / Recurrent Network / Attention

_YAI_ 2022. 8. 27. 15:51

** YAI 10기 김성준님이 기초심화팀에서 작성한 글입니다.


1. Lecture 11: Training Neural Networks II

  • Learning Rate Schedules

Learning rate 를 너무 큰 값으로 설정하면 밖으로 튀어나가 버리고(explosion), 너무 작은 값으로 설정하면 학습 속도가 매우 느려지므로 적절한 값으로 설정하는 것이 중요하다. 하지만 이게 쉽지는 않은데... 이를 해결하기 위해 learning rate 를 특정 epoch 마다 규칙 적으로 감소시키는 방법이 있다. 위의 사진으로부터 learning rate 가 감소하는 지점마다 loss 도 계단 모양으로 감소함을 확인할 수 있다.

하지만 이 방식은 learning rate 를 얼마마다 감소시켜야 하는지 등을 결정해야 하는 번거 로움이 있는데, 이 방법 대신 learning rate 를 epoch 가 증가할수록 코사인 함수처럼 감 소하도록 설정할 수도 있다.

그런데... 보통은 그냥 learning rate 를 상수로 설정해두는 것으로도 충분하다. 모델의 성 능에 큰 영향을 주지는 않기 때문이다. 성능을 미세하게나마 더 끌어올리고 싶다면 고려 해볼 만한 방법.

 

 

  • Early Stopping
  •  Choosing Hyperparameters

학습을 계속 하면서, 검증 데이터에 대한 정확 도가 어느 순간부터 떨어질 수도 있다. 그렇다 면 거기서 학습을 멈추는 것이 좋은 방법이다.

왼쪽의 그림은 두 가지 하이퍼파 라미터의 값을 고르는 방법 두 가 지를 보여준다. 세로축에 해당하는 파라미터는 모델의 성능에 미치는 영향이 비교적 작다. Grid 보다는 random layout 을 택하는 편이 성 능이 최고점에 가깝게 하는 파라 미터 값을 찾기 더 쉬울 것이다.

하이퍼파라미터의 값을 정할 때는 다음과 같이 하는 것이 좋다. 우선 training set 에서 데 이터를 조금 가져오고, 그 작은 dataset 에 대해 학습시킨다. 이 과정에서 learning rate 를 여러가지로 바꿔보면서 loss 가 줄어들도록 하는 값을 찾는 것이다.

 

  •  Model Ensembles

그냥 단순하다. 동시에 여러 모델을 학습시킨 뒤, 나중에 테스트할 때 각 모델들의 출력 의 평균으로 정답을 가려내는 것이다. 이것도 마찬가지로 미세하게나마 정확도를 올리고 싶다면 해볼 만하다.

 

  • Transfer Learning

쉽게 말하면, 이미 학습된 모델을 갖다 쓰는거다. 이렇게 하면 학습 데이터의 양이 적어 도 잘 학습하는게 가능해진다. 위의 사진은 AlexNet 에서 맨 끝의 classifier 부분만 떼어 낸 것을 활용한 것이다. 이렇게 하면 입력 이미지로부터 4096 종류의 feature 정보를 뽑 아내는게 가능하다. 이 이용하면 사용 가능한 학습 데이터가 적어도 feature 데이터로 부터 group 을 결정하는 부분만 학습하면 므로 학습이 가능해진다. Transfer learning 은 이 사용고 있는 학습법이다.


2. Lecture 12: Recurrent Networks

  • Examples of Recurrent Neural Networks (RNN) 
    • One to one: Image classification (image --> label)
    • One to many: Image captioning (image --> sequence)
    • Many to one: Video classification (sequence of image --> label)
    • Many to many: Language translation (English sequence --> French sequence) 

 

 

  • RNN의 특징
    • Hidden state 의 기 값은 보통 0으로 설정한다. 아니면 대신 학습을 통해 값을 결 정할 수도 있다.
    • Hidden state 의 사이이 계속 돌아가는 동에는, 같은 W를 계속 사용한다.
    • seq2se모델은 (many to one) (one to many) 의 방식으로 설계된다. 여기서 이 둘은 서로 다른 W를 갖고 있다.
  •  Embedding Layer

Input 으로 입력 은 one-hot 터의 형태 어 있다. 왼쪽의 사진에서, one- hot 터가 [1 0 0 0] 이라면, 연산 결과는 단순히 W 행렬에서  째 열을 추출한 것과 같다. 이러한 성질을 이용해 각 의 one-hot 터를 어 른 벡터로 바어 주 는 embedding matrix 를 각할 수 있다.

  • Truncated Backpropagation Through Time 

모델을 학습하려면 모 시간대에서의 loss 를 해야 하는데, 이 과정은 매우 은 양의 모리를 요한다. 그 대신, 모델에서의 time sequence 를 정 간으로 쪼갠 뒤, 각각 의 조각들 내에서만 학습을 진하고, 이를 다 조각들에 대해서도 반복한다.

  • Visualization of Hidden Units

위 사진은 quote detection cell 을 나낸 것이다. Hidden unit 은 파란색에 가울수록 1, 에 가울수록 -1의 값을 갖는데, 사진을 보면 인용문에 들어있는 에 대해서 는 1에 가까운 값을 나타냄을 확인할 수 있다.

비슷하게, 이것은 if statement 를 탐지하는 cell 이다

  • Image Captioning 

 

Hidden state 의 입력으로는 단어 (x), 이 state (h)  아니라 feature data 도 함된 다. 맨 처음에는 START 가 입력고, 출력값이 END  면 모델의 사이이 멈다.

  • Vanilla RNN Gradient Flow

Backpropagation 방향을 보면, 같은 W  반복해서   수 있다. 이 때문에 W 의 값이 면 exploding gradient 가 발생할 수 있고, W의 값이 작으면 vanishing gradient 가 발생할 수 있다. 이를 해결하기 위해 gradient 의 norm 으로 나어 scaling 하는 방 법을 각해볼 수 있는데, 이는 gradient 를 인위적으로 조작하는 것이기 때문에 그다지 좋은 방법은 아니라고 한다.

  • Long Short Term Memory (LSTM)

각각의 time step 마다 hidden state  아니라 cell state 라는 것도 계한다. f, i, g, o 는 각각 forget gate, input gate, gate gate, output gate 를 의미한다.

여기서 cell state 의 gradient flow  선으로 게 진한다. 마치 ResNet 에서 output 이 cell 을 고 바로 input 으로 도듯이.

  • Mutilayer RNNs

 라, hiddenstate 를 두  이상 는 것이 요할 수 있다. 하지만,RNN 에서는 을 매우  는 것은 권장되지 않는다.

 


3. Lecture 13: Attention

  • 기존 seq2seq 의 문제점

인코더와 디코더 사이에 context vector 가 존재하는데, 이 터는 기가 고정어 있다. 입력으로 은 문의 문 기가 정해진 터에 모두 담아야 하는데, 입력이 매우  다면 정보를 온전히 복원하기 들 것이다(bottleneck).

  • Attention

 

위에서 언급한 단점을 해결하기 위해, 코더의 모 단계에서 매번  context vector 를 고하는 방법을 각할 수 있다.e 는 alignmentscore 로,  단어 중 어 단 어에 얼마 할지의 정도를 결정한다.

a 는 e 리 softmax 를 한 결과이다. 각각의 h 의 값을 이에 상하는 a 의 비큼 곱 , 이들을 다 하면 c 가 된다. a 의 값이 을수록, 그 단어에  더 주한다는 .

여기서 c 의 값이 각 타임에서의 context vector 이다. 이 이 값을 이용해서 코더의 다음 hidden state 를 계한다.

  • Using Attention for Image Captioning

CNN 에서도 attention 의 활용이 가능하다. 아래의 사진은 코더에서 단어가 바 때마 다 관심 는 영이 바을 보여준다.

 

 

  • Self-Attention

Q  query, K  key, V  value 를 의미한다. 를 들어, Q1, Q2, Q3 은 각각 “I”, love, you 에 대한다 고 하. K1, K2, K3 도 마찬가지다. 그렇다면 Q1  K2 가 만나서 E12 가 는데, 이는 “I”  love” 와 연관성을 의미한다. 그 다음 E 들을 softmax 하 고, 각각의 비 각 단어에 정된 value 를 더하 는 방식이다.

  • Masked Self-Attention Layer

각 단어들리의 연관성을 할 때, 무시하고 싶은 단어 가 있을 수도 있다. 이 때는 E 의 값을 -inf 로 설정하 면 된다. 이렇게 하면 softmax 의 값이 0이 므로  영이 안 되기 때문.

  • Multihead Self-Attention Layer
 

그냥 위에서 언급한 attention layer 를 여러 개 붙인거. Ensemble 과 비 리인 하다.

  • Transformer

 

  

Attention is all you need 라는 문에 소된 모델이다. 실제로도 말 그대로 attention 만 사용하고, RNN 등은 사용하지 않는다. Residual connection 이 사용되었다.


4. Comment

- Attention 의 우, 내용이 잘 이해가 안 돼서 나동빈 씨 유튜브 동영상을 다.

https://youtu.be/AA621UofTUA

 

Comments