[ Theorem ] 인공지능특론 (2)
정리
언어모델 : 단어 나열에 확률을 부여하여, 얼마나 자연스러운지 확률로 평가
CBOW 모델을 언어모델로 사용시, 단어의 순서는 지키나, 맥락의 크기에 비례해 매개변수의 개수가 증가
RNN : 순환신경망으로, 데이터가 순환하면서 정보가 끊임없이 갱신되고, 과거 정보를 기억한다.(확장성)
출력이 2개로 분기하여 하나는 다시 입력으로(둘은 같은 데이터)
시계열 데이터 : 시간방향으로 데이터 나열
RNNLM(RNN Language Model): RNN을 사용한 언어 모델
perplexity(혼란도) : 언어 모델의 예측 성능 평가 척도(perplexity가 작을수록 좋은 예측 성능을 갖는다)
RNN의 문제점: RNN 계층이 과거 방향으로 의미 있는 기울기를 전달함으로써 학습이 이루어져야 하는데 그 기울기가 도중에 소실되거나 폭발이 일어나 가중치 매개변수가 제대로 갱신될 수 없는 상황이 발생
- 추가 필요
기울기 소실: 활성화 함수 tanh 노드 지날 때마다 값이 계속 작아짐 (기울기 0 - > 경사하강법 X)
기울기 폭발: 역전파에서 매번 똑같은 가중치 행렬 곱(원소들이 1보다 크다면 한 없이 커짐)
기울기 폭발 대책 -> threshold(임계치) 사용
LSTM(Long Short-Term Memory) : 기울기의 손실을 줄이는 것으로, input gate를 추가하는 방법 (복잡?)
LSTM 계층
Output gate : 각 원소에 대해 다음 시각의 은닉 상태에 얼마자 중요한가 조정(ex)= 수문)
Forget gate : 기억 셀에 무엇을 잊을지를 지시하는 게이트(RNN에 비해 미지수가 많다)
새로운 기억 셀 : 새로 기억해야 할 정보를 기억 셀에 추가
Input gate: 각 원소가 새로 추가되는 정보로써의 사치가 얼마나 큰지 판단
기억셀의 역전파에서는 +, 야다마르 곱(원소별 곱)만이 존재: 매번 새로운 게이트 값을 이용하여 원소별 곱을 계산하므로 곱셈의 효과가 누적되지 않아 기울기 소실이 일어나기 어려움, forget 게이트가 제어함으로써 잊어도 된다고 판단한 기억 셀의 원소에 대해서는 기울기가 작아짐
개선
LSTM 계층 다층화 :학습 잘되게 레이어 여러 개
드롭아웃에 의한 과적합 억제 : 무작위로 뉴런을 선택하여 선택한 뉴런을 무시(솎아내기)
- 언어 모델: 지금까지 주어진 단어들에서 다음에 출현하는 단어의 확률분포를 출력
다음 단어 생성시
- 결정적 방법: 확률이 가장 높은 단어를 선택
확률적 방법: 각 후보 단어의 확률에 맞게 선택 -> 매번 선택되는 단어가 달라질 수 있음
- seq2seq: 시계열 데이터를 다른 시계열 데이터로 변환하는 모델(여기서는 2개의 RNN 사용)
- Encoder : 인코딩은 임의의 길이 문장을 고정 길이 벡터로 변환
Decoder
- seq2seq 학습: 미니배치 선택 -> 기울기 계산 -> 매개변수 갱신
seq2seq 개선
입력 데이터 반전 (reverse) : 직관적으로 기울기 전파가 원활
엿보기(peeky): h를 여러 계층에 공유해서 집단지성과 같은 효과, 하지만 가중치 매개변수가 커지므로 계산량이 늘어남
이미지 캡셔닝(이미지 -> 문장, encoder를 합성곱 신경망[CNN]으로 대체)
seq2seq의 문제점: encoder의 출력이 고정 길이 벡터 -> 아무리 긴 문장이 입력되더라도 항상 같은 길이의 벡터로 출력해야 함 -> 필요한 정보가 벡터에 다 담기지 못하게 된다
Attention 계층
Encoder 개선
출력 길이를 입력 문장의 길이에 따라 바꾸기
시각별 LSTM 계층의 은닉 상태 벡터를 모두 사용
Decoder 개선
입력과 출력의 여러 단어 중 어떤 단어끼리 서로 관련되어 있는지(가중치) 구한다.
Decoder의 첫 번째 LSTM 계층의 은닉상태 벡터 : 은닉 벡터 h와 hs의 각 행의 유사도를 내적을 이용해 산출 -> softmax를 통한 정규화 -> 가중치 값으로 사용
가중합을 계산하여 ‘맥락 벡터’를 구한다.
-> Attention 계층
양방향 RNN
- 단어의 주변 정보를 균형있게(정보를 양쪽으로 전달)
AutoEncoder : 입력 이미지, 출력 이미지
컨볼루젼, 디컨볼루젼(그러나 압축 손실)
문제점은 비슷한 값이 흩어져 있음
연속적 인코딩 : 정규분포 사용, 새로 샘플(손실함수, 평균 제곱근 오차(RMSE) -> VAE
한계 : 압축손실로 인한 블러링
추천 알고리즘 VAE 를 통한 이용자 추천방식
협업필터링
GAN: 생성적 적대 신경망
진짜같은 가짜 : 생성자
가짜 구분 : 판별자
둘은 적대적 관계
한계: 학습 어려움, 손실함수 진동확률 높음, 판별자를 속이는 생성자(모드 붕괴), 신경쓸 요소 많음(하이퍼파라미터 튜닝)
Image to image translation
Style transfer
Pix2pix : 샘플 쌍 필요
CycleGAN : 샘플쌍 없을 때도 동작
각 생성자에서 만든 이미지가 대응되는 판별자를 속이는 가 - 유효상(validity)
두 생성자를 교대로 적용하면 원본 이미지를 얻는가 - 재구성(reconstruction)
각 생성자를 자신의 타깃 도메인에 있는 이미지에 적용했을 때 이미지가 바뀌지 않고 남아있는가 - 동일성(identify)