1. 딥러닝 개념 정리
1) 분포 가설과 분산 표현
- 희소 표현(Sparse Representation)
- 벡터의 특정 차원에 단어, 혹은 의미를 직접 매핑하는 방식
- 분산 표현(Distributed Representation)
- 모든 단어를 고정 차원의 벡터로 표현하지만 특정 차원이 특정한 의미를 가진다고 가정하진 않음.
- 분포 가설: 유사 맥락에서 나타난 단어는 의미가 비슷하다는 가정을 할 것
- ex) 나는 ___을 먹는다 ⇒ 목적어에 오는 것들은 의미상 비슷함
- 분포 표현: 비슷한 맥락에서 나타난 단어끼리는 벡터 사이의 거리를 가깝게, 그렇지 않으면 멀도록 조정
- 단어 간의 유사도 측정 가능
- embedding layer: 단어 분산 표현을 위한 레이어, n*k의 분산 표현 사전을 생성(단어 n개, k차원으로 표현)
2) Embedding Layer
- 의미
- 원리
- 단어의 양을 전달하면 그에 맞게 사전을 생성
- embedding size를 정하면 weight는 단어의 수(=embedding size)와 같아짐.
- 데이터를 거치며 단어의 분산 표현(의미)를 업데이트 해나감(Lookup table)
- 단어가 룩업 테이블에 매핑되는 원리
- one-hot encoding: N개의 단어를 N차원의 벡터로 표현하는데, 단어가 포함된다면 1을 넣고 나머지엔 0을 넣는다.
- ex) [사과, 배, 바나나, 딸기]에서 딸기일 경우 [0, 0, 0, 1]
- 단점
- 유의어, 관련어와의 개념차이가 무관한 단어와의 차이랑 다를게 없음.
- 차원의 저주: 단어 수만큼 원-핫 인코딩을 구성하면 차원의 수가 그만큼 증가함.
- 주의점
- 단어를 단순히 대응시킬 뿐이라 미분 불가능 = 어떤 연산 결과를 embedding layer에 연결시킬 수 없음
- 입력에 직접 연결되게 사용해야함, 원-핫 인코딩된 단어 벡터의 형태일 때 가장 이상적
3) RNN(Recurrent Neural Network)
- Sequential
- 문장, 음성, 영상의 특성
- sequence data: 데이터의 나열 사이에 연관성이 없는 배열도 해당, 하지만 인공지능에서는 예측을 위해 요소 간의 연관성을 필요로 하기 때문에 딥러닝에서의 시퀀스는 순차적인 특성은 필수 요소임.
- RNN의 원리
- 입력되는 모든 단어만큼 Weight를 만드는 것이 아님.
- 입력 차원과 출력 차원에 해당하는 단 하나의 weight를 순차적으로 업데이트
- 한 문장을 처리하는 데에 반복되는 연산이 필요해 다른 레이어에 비해 느리다
gif 출처
- 문제
- 기울기 소실: 위의 gif 파일을 보면
?
에서 What
은 거의 희석되어 있는 것을 볼 수 있다.
4) LSTM(Long Short-Term Memory)
기울기 소실 문제를 해결하기 위해 고안된 RNN 레이어의 일종
내용 출처
1. 구성
- foret gate layer: cell state로부터 어떤 정보를 버릴 것인지 sigmoid layer를 이용해 결정
- input gate layer: 새롭게 생성된 cell state를 기존 cell state에 얼마나 반영할 것인가. (sigmoid layer가 어떤 값을 업데이트할 지 정한 후, tanh layer가 새로운 후보 값을 대상으로 벡터를 생성해 cell state에 업데이트 할 재료를 만듦)
- output gate layer: 새롭게 생성된 cell state를 새로운 hidden state에 반영할 정도를 정함
- 비교
참고
- GRU: Gate mechanism이 적용된 RNN 프레임워크의 일종, LSTM에 비해 더 간략한 구조를 가지고 있음
- 양방향 RNN: 순방향으로만 진행할 경우 생길 수 있는 문제를 방지하고자 진행방향에 변화를 준 RNN
- 순방향, 역방향의 weight를 각각 정의하므로 RNN의 weight의 2배가 됨
2. CS231N Lecture 5 내용 정리
참고자료
CS231N Lecture 5 내용 정리
CNN 용어 정리
1 * 1 convolution
CNN architecture
1) 용어정리
- 합성곱
출처
- 필터를 이용해 슬라이딩하며 계산을 수행함. 각 결과를 모은 Feature map을 생성
- 채널
- 컬러값을 나타냄 ex) RGB = 3, WB = 1
- n개의 필터 = n개의 채널
- 필터 (+ stride)
- 이미지의 특징을 추출하기 위한 공용 파라미터, kernel이라고도 함
- 정사각형 형태가 일반적
- 지정된 간격(stride)으로 입력 데이터를 순회, 채널별로 합성곱을 해 모든 채널의 합성곱의 합을 feature map으로 생성함
- 패딩
- feature map(합성곱을 한 결과)의 크기는 합성곱 수행시 이전과 비교해 줄어든다.
- 위와 같은 변화를 방지하기 위해 패딩을 설정함.
- 일반적으로 zero-padding을 사용
- pooling layer
- convolution layer의 activation map을 입력 받아 입력된 데이터를 줄이거나 특정 데이터를 강조
- 주로 Max pooling을 이용함
+)
- 패딩(Padding) = zero 패딩. 합성곱 층의 입력 주위에 0으로 채워진 픽셀 패딩하는 이유
- 입력과 출력의 크기를 같게 만들어주기 위해 처리해준다.
- 가장자리의 중요한 정보를 잃지 않기 위하여 처리
- 피처 맵(Feature Map)
- 필터가 입력 이미지의 특성을 찾아낸 출력
- 수학적으로는 합성곱이나 풀링 계산으로 만들어진 행렬.
- 액티베이션 맵(Activation Map) = 특성 맵
- 뉴런 하나를 나타내는 그리드의 각 칸이 활성화되는 크기를 보여준다.
2) Downsampling
padding을 이용해 크기를 줄이지 않는 방법을 선택했는데, pooling을 하는 이유는 무엇일까?
- padding을 추가해서 합성곱을 수행하는 것은 이미지의 특정 부분을 잘라내 부분적 특징을 추출하는 것.
- 반면에 pooling은 이미지의 전체적인 특성은 유지한 채로 픽셀만 줄이는 것
- 이렇게 하면 계산이 빨라짐
3) Feature map vs activation map
Activation Map은 Feature Map 행렬에 활성 함수를 적용한 결과. 즉, Convolution 레이어의 최종 출력 결과가 Activation Map.
4) CNN Architecture
- 마지막에 FC layer를 사용하는 이유
분류를 수행하기 위함
3. 회고
아는 것 같다가도 모르겠는게 딥러닝인 거 같다. 이제 알았다고 생각했는데 정작 질문을 받거나 다른 모델과 비교해보라고 하면 바로 답을 내지 못하는게 부지기수다. 공부할 때 단순하게 받아들이기만 하는게 아니라 이전에 배웠던 내용하고 비교해보면서 생각해는 힘을 길러야겠다.