정말 재미있다! 아니 어떻게 이렇게 딱 맞는 주제가 등장하지? 안그래도 자연어 전처리(NLP)를 찾아보면서 도저히 갈피를 잡지 못하고 있었는데 수업시간에 두둥 등장. 바로바로 RNN, BERT 등등 자연어 처리를 위한 여러 모델이 등장한닷! 하지만 교수님이 수업하시지 않고 .. 조교님들이 완전 살짝만 빠르게 수업하셔서 많이 아쉬운 .... 아쉬워 ............
Multi-Layer Perceptron은 입력 데이터가 스칼라인 반면, RNN은 입력 데이터가 시퀀스 데이터다!
이렇게 순서에 따라 hidden layer의 가중치를 계산하고 다음 데이터에 전달해서 사용하는 ... Multi-Layer Perceptron에서는 hidden layer에서 각 노드끼리는 공유하지 않았는데, 여기서는 연결된다!
내가 찾던 부분!! 시퀀스 데이터를 딥러닝을 위한 데이터로 만들기 위해 수치화하는 과정이다. 내가 생각한 부분들이 꽤 있었는데!
이후 수치화할 때 여러 기법이 있는데
그리고 등장하는 것이
그리고 등장하는 것은 바로
효과적인 데이터 표현을 학습하기 위한 인공 신경망! 3가지로 구성된다
인코더로 인코딩하면 Latent Space에 인코딩된 데이터가 나오고, 이 데이터를 디코더로 디코딩하여 원래의 input이 나오도록 중간 가중치를 학습하는 모델!
근데 여기서 또 등장하는게
정말 끝이 없다 .... 아무튼 인코더-디코더 구조인데 입력 시퀀스 데이터를 출력 시퀀스 데이터로 변환해준다. 여기서는
3가지가 있다고! 그리고 디코더에서 문장의 시작과 끝을 알리는 토큰 BOS, EOS가 등장한다!
그럼 auto-encoder와 다른점이 뭘까
사실 Attention Mechanism을 RNN의 Seq2Seq에 적용하는 과정에서 key, value, query가 등장하는데 이걸 잘 이해하지 못했다 ...
시퀀스 데이터 처리를 위해 RNN 계층 없이 attention 메커니즘만 사용하는 신경망 아키텍쳐. 자연어 처리를 위한 아키텍쳐 중 지배적이라고 ..!
입력 시퀀스의 순서에 대한 개념이 없어서, positional encoding으로 모델에게 각 토큰의 위치 정보를 전달한다고 한다!
요런 식으로 !?!?
이때 인코딩 함수를 cos, sin을 번갈아가면서 써야 데이터가 겹칠 일이 없다고 한다 ..!!
앞서 말했듯이 트랜스포머 아키텍쳐는 RNN 계층이 없기 때문에 attention 메커니즘을 사용해서 시퀀스 내의 위치 정보를 학습한다!
여러 종류가 있는데
여기도 잘 이해를 못했다 ... NLP 너무 어려워 ....
그 외에도 Position-wised Feed-Forward Network가 등장하는데 이것도 잘 이해를 못해서 .... 교수님 ...수업 다시 해주세요 ....... 교수님의 설명이 필요합니다 .............
그리고 등장하는 핵심 개념
attention 메커니즘을 이용해서 맥락과 이해?를 학습하는 신경망!
이렇게 인코더, 디코더로 나눌 수 있는데 같이 쓰기 보다는 인코더만, 디코더만 쓰는 경우가 많다고 한다.
인코더는 positional encoding과 multi-head attention을 이용해서 입력 시퀀스 데이터를 컨텍스트 벡터로 인코딩한다.
약간 multi-head attention으로 컨텍스트 정보를 만들고 feed-forward network에서 생성된 컨텍스트 정보를 병합하는 느낌
인코딩된 입력 데이터를 가지고 새로운 시퀀스를 생성한다.
디코더의 사진을 잘 보면
masked multi-head attention으로 인코딩된 입력 데이터 중에서 뽑아내고, 뽑아낸 인코딩 데이터와 전체 인코딩 데이터를 이용해서 multi-head attention을 다시 수행하고 똑같이 feed-forward network에서 병합하는 느낌이랄까
앞서 말했듯 트랜스포머는 인코더와 디코더를 따로 많이 쓴다고 했는데
여기서 관심을 가져야할 부분은 BERT
3가지 임베딩의 합으로 표현된다!
word-piece embedding을 이용해서 word를 sub-word로 분리한다. 예를 들어 playing = play + ing 이렇게!
문장 사이에 SEP 라는 토큰을 삽입해서 문장을 나눈다
단어 위치 정보를 추가하는 인코더!
이런 BERT는 2가지 일을 수행한다
아무튼 이렇게 BERT에 대한 소개가 끝! 났다 ...... 조교님이 여기서 더 설명하시진 않았다 ..ㅜㅜ 간단한 예제만이라도 보여주셨으면 ... 써보는데 정말 도음 많이 될 것 같았지만 아쉽게도 없고 ...
그래서 이젠 BERT에 대해 찾아보고 이를 적용해서 딥러닝 모델 만드는 법을 찾아봐야겠다! 그리고 리뷰 데이터들 모아서 학습시켜볼 예정이다.
근데 ....시험 공부에 ... 인공지능 공부에 .... 할게 넘 많아 ........ 그 와중에 과제는 또 2개 이상 나올 예정.... 추가로 텀프 2개 ..... 나 죽어 진짜 .....