CBOW: 맥락으로부터 중심 단어 추측
You ? goodbye and I say hello.
You say ? and I say hello.
You say goodbye ? I say hello.
You say goodbye and ? say hello.
You say goodbye and I say ?.
CBOW 변형 모델: 앞 맥락으로 다음 단어 추측
You say ? and I say hello.
You say goodbye ? I say hello.
You say goodbye and ? say hello.
You say goodbye and I say ?.
You say goodbye and I say hello?
위 그림은... 잘못된 예시이다. beach 얘기를 하고 있는데 비속어로 인식을 했다. 발음 탓인가ㅠㅠ
다음은 ChatGPT4를 이용해 블랙핑크의 붐바야 가사를 셰익스피어 문체로 바꾼 것이다.
바흐의 작품을 코퍼스로 학습시켜 얻은 CBOW 변형 모델은
바흐의 자주 사용하는 음계와 박자를 학습하기 때문에
바흐의 스타일을 흉내낼 수 있다.
문제: 고정된 context에서 벗어날 경우 앞의 정보가 완전히 사라진다.
Tom was watching TV in his room. Mary came into the room. Mary said hi to ?.
Tom ?로부터 18번째 앞에 나오기 때문에 맥락이 10개였다면 이 문제에 답을할 수 없다. 맥락을 아무리 늘려도 그 앞의 단어는 무시될 수 밖에 없다. (& 매개변수가 계속 늘어나므로 비효율적이다.)
문제: 순서가 무시된다.
You say ? and I say hello.
(you,say)와 (say, you)는 행렬곱층을 거쳐 평균하면 같기 때문에 순서가 무시된다.
Recurrent: 순환한다, 재발한다, 일어난다.
RNN: 순환하는 신경망
어느 한 시점에서 시작한 것이 시간을 지나 다시 원래 장소로 돌아옴
RNN 계층은 순환하는 경로를 포함
단어 벡터 X_t
을 입력받는데 여기서 t
는 시간
은닉 벡터 h_t
가 출력됨
[출처:밑바닥부터 시작하는 딥러닝2 사이토 고기토 저]
: 입력 를 출력 로 변환하기 위한 가중치
: 하나의 RNN 출력을 다음 시각의 출력으로 변환하기 위한 가중치
: 편향
: 이전 시각의 은닉층 행 벡터
: 현재 시각 입력 데이터의 행 벡터
[식 5.9]에서는 행렬 곱을 계산하고, 그 합을 함수를 이용해 변환하고
그 결과 시각 의 출력 가 된다.
이 는 다음 계층인 은닉층으로 보내지는 한편 다음 시각의 RNN 계층(= 현재 계층으로 되돌아옴)을 향해 오른쪽으로도 출력된다.
현재의 출력()은 한 시각이전 출력()을 이용해 계산이 된다. 즉, RNN은 라는 '상태'를 가지고 있으며[식 5.9]에서와 같이 다음 시각의 은닉벡터 로 갱신된다.
sigmoid와 유사하나, 대칭점이 이동한 형태의 hyperbolic tangent함수이다.
이는 계산의 편의를 위한 작업이다.
출처: RonyRestRepo
정의
=
은 Sigmoid와 유사하게 생겼다.
=
를 Sigmoid 형태로 표현할 수 있다.
가 딥러닝 신경망 네트워크에 활성 함수로 사용될 때 경사 하강법(Gradient Descent Algorithm) 계산 혹은 역전파 계산 과정에서 함수의 미분이 필요하다. 이 왜 를 대체할 수 있는 지 또 하나의 멋진 이유가 여기서 나온다.
증명 과정은 생략했지만, 결과가 덧셈, 뺄셈, 곱셈으로만 이루어지는 것을 쉽게 확인할 수 있다.
이는 GPU를 사용해서 계산할 수 있는 최적의 연산이기 때문에 딥러닝 계산에 활용될 수 있다. 나눗셈만 되어도 시간 복잡도가 크게 늘어나 GPU에서 적합하지 않게 된다.