[Boostcamp AI Tech] 2주차 Day 4 학습 기록

bluegun·2021년 8월 12일
0

AI Tech 2기 활동

목록 보기
9/87

학습 내용

RNN

  • 주어지는 모델 자체가 Sequential model이다.

Sequential model

  • 말, 비디오, 행동, ...

  • 이전 데이터들이 들어왔을 때, 이를 통해 다음 데이터를 예측

    • 고려해야 할 이전 데이터가 너무 많다는 게 문제다.
    • -> 과거의 몇 개만 보겠다 : Fix the past timespan
    • Markov model : 현재 데이터가 바로 전의 과거 데이터에만 dependent하다고 가정
      • joint distribution을 표현하기 쉬워진다.
  • Latent autogressive model

    • Input과 output 사이에 hidden layer가 있어, hidden이 과거의 정보를 축약한다.
      • output 기준으론 hidden 값 하나에만 dependent한데, h는 이전의 정보를 요약한 hidden state이다.
  • Recurent Neural Network

    • MLP와 유사한데, x에서 h로 가는 중간층 A가 시간 순으로 recurrent하게 들어온다.

    • 펼쳐진 그림을 참조

    • RNN의 단점 : Short-term dependency

      • 과거에 있던 정보가 오래 살아있기 힘들다.
  • Long Short Term Memory(LSTM)

    • RNN의 short term dependency를 해결할 수 있다.
    • output으로 향하거나 t+1 LSTM으로 향할 수 있는 hidden state, 오직 LSTM 방향으로만 움직이는 cell state로 나뉜다.
      • cell state : t까지 들어온 정보를 summarize
      • 어떤 정보가 유용한지, 유용한지 않은지를 판단해 다음 LSTM으로 넘겨준다.
    • Forget gate, Input Gate, output Gate : throw할 걸 정하는 영역, store할 걸 정하는 영역, 어떤 걸 output할 지 정하는 영역
    • Input state에서 store할 데이터와, 그 데이터의 정보를 따로 학습하고, store 할 데이터는 cell state의 데이터와 적절히 융합하여 올라간다.(Update cell)
  • Gated Recurrent Unit(GRU)

    • Gate가 2개(reset gate, update gate)
    • hidden state만 있다.
    • LSTM보다 GRU를 활용할 때 성능이 올라가는 경우가 있다.(네트워크 파라미터가 적으니까)

Transformer

  • Sequential model은 sequence의 길이가 계속 달라질 수 있어 다루기 어렵다.

    • 입력이 sequential하게 진행되면, 그 과정에서 단어의 순서가 바뀌거나 정보가 빠지면 이를 modeling하기 어렵다.
  • Transformer

    • Attention이란 구조 활용

    • encoder, decoder 구조

    • N개의 input이 들어와도 한 번에 encoding, decoding은 단어 개수 N개로 됨

    • Encoder 하나는 Self-attention, Feed forward neural network로 구성되어 있음.

  • self attention

    • n개의 input(vector)를 n개의 변환된 output으로
    • 이 때, x를 z로 변환하는 데 다른 x값들을 참조하게 된다.
    • embedding vector 각각에 대해 Query, Key, Value vector를 만들고, Q와 K의 내적으로 score를 만들고, softmax를 취한 후, 여기에 V로 weighted sum해주면 최종 encoding vector가 된다.
      • 이 때, Query와 Key는 차원이 같아야하지만(내적해야하니까) Value는 달라도 된다(weighted sum)
  • 왜 잘될까?

    • 입력이 고정돼도 옆에 다른 입력이 달라지면 출력이 달라질 수 있는 여지가 있어 더 flexble하다.
  • Multi-headed Attention

    • 여러개의 Q,K,V를 통해 여러 개의 Attention Head를 만든다.
  • Positional encoding

    • 위의 방식으로 하면, 문장 내 순서가 바뀌어도 같은 결과로 encoding된다.
    • vector에 해당하는 값을 더해준다.

피어 세션

  • 각자 맡은 부분이 아닌 선택 과제에 대해 보고 궁금한 점에 대한 질의응답을 함.
  • 시간이 남아 전에 얘기했던 대로 알고리즘 문제를 찾아 간단하게 얘기 나누고, 적당한 난이도의 문제를 풀어오기로 함.

특강

깃 사용법(이고잉님)

  • Branch, merge를 통해 실험적인 내용을 부담 없이 시도해보는 방법을 알게 되었다.
  • 이전 버전에 버그가 있을 때 버그가 생긴 버전으로 돌아가 고치는 방법을 배웠다.
  • Pull request를 하는 상황과 방법을 배웠다.

추가로 공부할 내용

  • Transformer가 중요한 내용 같지만 아직 개념과 코드를 잘 이해하지 못했다. 자주 쓰이는 개념인 만큼 주말 내에 반드시 정리해야 할 것 같다.

느낀 점

  • 선택 과제에 2~3일을 매달려도 완전히 이해 못하고 강의 들을 시간이 빠듯한 상황이라 좀 찝찝하지만, 일단 어느정도 이해는 돼가고 있는 것 같다.
  • 월요일까지 쉬니까 그 때 동안 배운 이론을 정립하는 시간을 많이 가져야 할 것 같다.
  • 이번주도 목요일 쯤 오니 약간 집중력이 부족한 느낌이 들었다.

0개의 댓글