cs231n 10강 RNN 2월22일 14시 37분
<CNN복습>
구글넷과 vgg넷은 배치 노말라이제이션이 없어서 테크닉을 활용해 딮한 모델을 설계하는데 활용헀다.
필요없는레이어를 학습하는데 도움을 준다.
리쿼렌트 뉴럴 네트워크
바닐라 뉴럴 네트워크 : 하나인풋 으로 벡터를 입력받고 출력이 하나 나온다.
- feed forward neural network - dense라고도 쓴다 - lenear 하다
알엔엔은 입출력을 다양하게 할 필요가 있다.
원투원
원투매니 이미지 넣었을때 : 모자를 쓰고 있다.
매니투원 : 나는 너를 사랑한다 -> 긍정/부정
매니투매니 나는너를 사랑한다 -> i love you
매니투매니 동영상 -> 문장
입력은 이미지와같은 단일입력이지만 출력은 캡션과 같은 가변 출력
입력도 가변 입력 출력도 가변 출력
예를들어 비디오를 입력으로 받아 이게 무슨 행동인지 출력하는것이 가변 출력
마지막으로 입력프레임마다 가변 출력을 해야할 때도 있다.
가변길이의 입력를 다루기위해 패러다임 이라는 기법을 사용한다.
이미지 입출력 고정된 길이
입력 X가 RNN으로 들어간다. 그리고 안에 히든레이어가 있고 재귀적인 기능을 한다.
매 스텝 W는 동일하다.
이전스테이트와 히든스테이트를 받아서 다음 스테이트에 곱해준다.
새로운 h_t를 가중치와 곱해준다.
h_t : 히든 스테이트
초기 히든 스테이트 값은 임의로 만들어 줘서 넣어준다.
히든레이어안에 가중치가 3개이다. Whh Wxh Why
히든스테이트를 가지며 x1이 계속 반복적으로 입력으로 들어가고 이를 재귀적으로 반복한다.
운롤릴을 하면 히든스테이트 에이치 제로는 0으로 초기화
그래서 나온게 에이치 1 계속해서 가변입력 x를 넣어준다.
동일한 가중치 행렬 W를 사용한다.
W의 그라이언트를 모두 더해준다.
y_t는 매 스탭의 class 스코어
y_t는 softmax로 구해서
알엔엔 최종 로스 각 로스의 합
dloss/dw를 구해야 백프로파 게이션을 할 수 있다.
매니투원 최종 히든스테이트가 전체
원투매니 고정입력
many to many : Y -> 스코어 L-> 로스
many to one : Ht에 요약이 나온다.
원투매니 : ht 에 초기화가 나온다.
시퀀스투 시퀀스
가변입력 가변출력
매니투원 원투매니 합체한것
센텐스 요약 가변입력을 하나의 벡터로 요약
디코더에서는 가변출력을 내밷는다
가변출력은 매스텝 적절한 걸 내밷는다.
알엔엔 랭귀지 모델링에서 만이쓴다 어떻게 자연어를 만들어낼지ㅣ
다음 문자가 무엇일지 예측하는것
hello가 x_t
원핫인코딩 해준다.
각 글자는 하나의 벡터로 표현할 수 있다.
y-t는 h다음에 무슨 단어가 나올지 예측하는 것
manyto one 인코더
원투매니 디코더 : 원 -> h_t
자연어처리에서 가장 원시적인 모델이 sequence to sequence 이다
RNN 첫 입력 h
helo에 대한 점수가 나온다. 확률분포 만들어지고
13퍼 확률로 제일 높은게 e여서 e가 나오고 e를 다시 넣고 l이 나오고
확률분포 사용 or 가장 높은 값 사용
확률 분포 사용하면 좀더 다양한 해석 결과가 나올 수 있다. 한번 틀려도 다시 샘플링 해서 원하는 값이 나올 수 있다.
가장 높은 값 쓰면 좀더 확실할 수 있다. 근데 한번 틀리면 나중에 제대로된 정답이 나올 수 없다.
시퀀스 출력 값마다 출력값이 존재한다.
2019 수정 부분
샘플링이라는 말을 썼는데
소프트맥스 쓰는건 맞다. 84퍼 확률로 o가 나와야 하는데 13퍼 확률로 e가 나왔다., 5퍼 확률로 l이 나왔는데 이렇게 나오는 이유는 teacher forcing때문이다. 교사강요 방식
hello 입력값의 순서를 알기 때문에 샘플링 값이 높더라도 순서가 아는 입력값 선에서는 무조건 h다음 e가, e다음에 l이, 나오게 한다.
어텐션에도 소프트맥스가 들어가는데 여기도 티처포싱이 들어가나?
랭귀지 모델에는 티처포싱이 들어갈 수 밖에 없다. 왜냐면 말하는 순서가 정해져 있기 떄문이다.
트런케이티드 백프로파게이션
입력이 위키미디아처럼 엄청 길어도 한 스텝을 일정 단위를 자른다
중간중간 로스를 구한다. 그라디언트 스텝은 현재 배치에서만 진행한다.
이전배치에서 히든스테이트를 가져오고
스퀀스 스토케스틱 모델과 비슷하다 미니배치 하는것
전체데이터로 그라디언트를 구하기 힘들어서 나눠서 한다.
RNN은 왜 정보가 손실돼는가
계속 업데이트 되면서 정보가 계속 들어온다. 초기 가중치가 영향력이 점점 떨어진다. 그래서 점점 정보가 손실이 일어난다.
그래서 LSTM이 나와서 초기정보를 끝까지 가져가게 해준다.
그런데 RNN에 attention기능을 추가하면 정보손실을 방지할 수 있다.
minchar rnn 만들었다.
알엔엔으로 어떤문장이나 학습시킬수있다,
셰익스피어 작품 학습시킬수 있고 학습 하면 할수록 의미있는 문장을 만들어낸다.
더 학습시키면 더 긴 문장도 만들 수 있다.
rnn엔 히든벡터가 있고 이 벡터가 계속 업데이트 된다
벡터가 어떤게 들어있는지 확인해보면
RNN은 각 레이어를 해석하기 어렵다.
따옴표로 구분하는 히든레이어도 있고
줄바꿈으로 구분하는 레이어도 있다.
if 조건문의 내부와 외부를 구분하기도 하고
커멘츠 들여쓰기를 구분한다.
이렇게 입력데이터 구조를 학습한다.
gan,gpt 라는 것은 무언가 데이터를 만들어내는에
gan에 text를 넣는 것은 불가능하다.
'모두의 연구소 AIFFEL 교육' 카테고리의 다른 글
github viewer 사이트 (0) | 2021.03.04 |
---|---|
논문보기 싸이트 (0) | 2021.03.04 |
CS231n 9장 (0) | 2021.02.15 |
cs231 7장 (0) | 2021.02.15 |
2021년 2월 15일 (0) | 2021.02.15 |