-
[HandsOn]15. RNN과 CNN을 사용해 시퀀스 처리하기 - 내용 정리1[도서완독]Hands On Machine Learning 2022. 8. 8. 20:24
어느덧 15과다! 저번 주는 일이 너무 바빠서.. 공부를 하긴 했지만 블로그에 정리를 하지 못했다.
그래도 꾸준히 어찌저찌 공부하고 있는 내가 자랑스러움!! ㅎㅎ
계속 가보자!! 💨💨💨
15.1 순환 뉴런과 순환 층
지금까지는 피드포워드 신경망만 배웠지만, RNN은 다르다.
가장 간단한 RNN을 살펴보자.
각 타임스텝 t 마다 순환 뉴런은 x(t)와 이전 타임 스텝의 출력인 y(t)를 입력으로 받음.
오른쪽 그림은 시간에 따라 네트워크를 펼친 것으로, 동일한 뉴런을 타임 스텝마다 하나씩 표현한 것.
y(t)은 결국 t=0에서부터 모든 입력에 대한 함수가 됨.(x(0),x(1),...,x(t))
15.1.1 메모리 셀
y(t)는 이전 타임스텝의 모든 입력에 대한 함수이므로 이를 일종의 메모리 형태라고 할 수 있음.
t에 걸쳐서 어떤 상태를 보존하는 신경망의 구성 요소를 메모리 셀이라고 함.
(보통 RNN에서 셀이라고 하면 DNN에서의 층(layer)을 의미)
저 위에서 이야기한 기본 셀의 경우 출력 y가 셀의 상태와 동일하지만,
일반적으로 타임스텝 t에서의 셀의 상태 h(t) (h=hidden)은 t에서의 입력과 이전 타임 스텝의 상태에 대한 함수.
h(t)=f(h(t-1),x(t))
셀의 히든 상태와 출력은 다를 수 있다 15.1.2 입력과 출력 시퀀스
- 시퀀스 투 시퀀스 네트워크 ( 좌측 위 ) : ex. 최근 N 일치의 주식가격을 주입하면 네트워크는 각 입력값보다 하루 앞선 값을 출력. (N-1일 전부터 내일까지)
- 시퀀스 투 벡터 네트워크 (우측 위) : 입력 시퀀스를 네트워크에 주입하고, 마지막을 제외한 모든 출력을 무시 가능
ex. 영화 리뷰에 있는 연속된 단어를 주입하면 네트워크는 감성 점수를 출력(-1(싫다)~1(좋다)) - 벡터 투 시퀀스 네트워크 (좌측 아래) : 하나의 입력 벡터를 반복해서 네트워크에 주입하고, 하나의 시퀀스를 출력 가능 ex. 이미지를 입력하여 이미지에 대한 캡션을 출력
- 인코더-디코더 (우측 아래) : 인코더 라 부르는 시퀀스 투 벡터 네트워크 뒤에 디코더 라 부르는 벡터 투 시퀀스 네트워크를 연결할 수 있음. ex. 한 언어의 문장을 다른 언어로 번역하는데 사용할 수 있음.
문장의 마지막 단어가 번역의 첫 번째 단어에 영항을 줄 수 있기 때문에, 시퀀스 투 시퀀스 RNN을 사용하여 한 단어씩 번역하는 것보다 훨씬 더 잘 작동.(16장에서 보자!)
'[도서완독]Hands On Machine Learning' 카테고리의 다른 글
[HandsOn] 16. RNN과 어텐션을 사용한 자연어 처리 - 내용 정리1 (0) 2022.08.16 [HandsOn]15. RNN과 CNN을 사용해 시퀀스 처리하기 - 내용 정리2 (0) 2022.08.13 [HandsOn]14. 합성곱 신경망을 사용한 컴퓨터 비전 - 내용 정리1 (0) 2022.08.01 [HandsOn]13. 텐서플로에서 데이터 적재와 전처리하기 - 연습문제 (0) 2022.07.29 [HandsOn]13. 텐서플로에서 데이터 적재와 전처리하기 - 내용 정리2 (0) 2022.07.29