확실히 원리 기반으로 책이 설명되어 있는거 같아서 좋은거 같다.
1편에 이어서 2편도 공부해보고 느낀점은 간략히 정리하려고 한다.
2편을 볼려면, 그래도 1편을 보고 나서 학습하는게 좋을거 같다.
이 책의 특징은 라이브러리나, 프레임워크를 사용하지 않고 딥러닝 원리를 설명하는데 있다.
(numpy정도는 제외!!)
번역 진행시 윤영선 교수님의 기여로 원서보다 조금 알기쉽게 추가된 내용이 있다고 하는데, 더 좋아진거 같다.
간단하게 Chap별로 중요한 keyword정도 뽑아보면서 정리하려고 한다.
CHAPTER 1 신경망 복습
1.1 수학과 파이썬 복습
- 벡터(1차원 배열), 행렬(2차원 배열)
- numpy의 브로드캐스팅 기능 : 배열의 차원이 달라도 자동적으로 확장하는 기능
- 백터의 내적 : 두 벡터가 얼마나 같은 방향을 향하고 있는가 (길이가 1인 경우 같은 방향이면 1, 반대 방향이면 -1)
- np.dot, np.matmul
- 행렬의 곱 ( 2x3, 3x5 = 2x5) : 이 부분이 동일해야 함
- h = xW + b (h : 은닉층의 뉴런, x : 입력값, W:가중치, b:편향) 모두 행렬로 구성된다.
1.2 신경망의 추론
- 신경망의 작업은 "학습", "추론" 으로 구분
- 신경망(완전연결계층) : 입력층 → 은닉층 → 출력층
- 화살표 : 가중치 부여 + 활성화 함수 적용값 + 편향 (뉴런에 영향 받지 않는 값, 정소)
- 완전연결계층에 의한 변환은 '선형'변환
L 비선형효과를 부여하는것이 '활성화 함수'
L 비선형 함수를 이용해서 신경망의 표현력을 높임
L 활성화 함수는 다양함 (ex : 시그모이드 함수) - 순전파 : 입력층 → 출력층 방향으로 진행 (그반대 진행은 역전파)
1.3 신경망의 학습
- 학습을 먼저 하고 그 이후에 추론을 진행한다.
- 손실함수
L 손실 (loss) : 신경망의 성능을 나타내는 척도
L 교차 엔트로피 오차(Cross Entropy Error)를 이용 - 손실함수를 적용한 신경망 계층 구성
X → Affline → Sigmoid → Affine → Softmax → Cross Entropy Error → L
→ t (정답 레이블) - 소프트맥스 함수 : 0.0이상 ~ 1.0 이하의 실수, 출력값을 '확률'로 해석함
- 윈핫 벡터 : 단 하나의 원소만 1이고, 나머지는 0인 벡터 ex : [0,0,1]
- 미분과 기울기 : 신경망 학습의 목표인, 손실을 최소화 하는 매개변수를 찾은 역활
- 각 매개변수에 대한 손실의 기울기 계산
L 오차역전법 이용 : 연쇄법칙을 이용함 (합성함수에 대한 미분의 법칙) - 계산그래프 : 덧셈노드, 곱셈노드, Repeat노드, Sum노드, MatMul노드
1.4 신경망으로 문제를 풀다
- 에폭 : 학습의 단위, 1에폭은 학습데이터를 모두 살펴본 시점
1.5 계산 고속화
- 비트 정밀도
L numpy의 부동소수점은 기본적으로 64비트
L 신경망 추론, 학습시 32비트도 무방
L 가중치 계산시, 16비트도 무방 - GPU (쿠파이)
L 파이선 Library, GPU를 이용한 병렬계산 수행
L 엔비디아 GPU에서만 동작함
L CUDA라는 GPU전용 범용 병렬 컴퓨팅 플랫폼 설치 필수
L Numpy와 호환되는 API제공
CHAPTER 2 자연어와 단어의 분산 표현
2.1 자연어 처리란
- NLP (Natural Language Processing) : 자연어 처리 (우리말을 컴퓨터에게 이해시키는 기술, 분야)
- 시소러스(유의어사전)를 활용한 기법 (2장)
- 통계기반 기법 (2장)
- 추론기반 기법 (3장)
2.2 시소러스
- WordNet과 같은 유명한 사항이 있다.
- 시대의 변화 대응이 어렵다.
- 사람의 인견비가 많이 든다.
- 단어의 미묘한 차이를 표현할 수 없다.
2.3 통계 기반 기법
- 말뭉치(대량의 사람이 직접 작성한 대량의 텍스트 테이터)
- 분산표현 : 색을 표현하는 RGB 백터 표현(120, 29, 10) 처럼 단어도 그렇게 표현을 진행해보자
- 분포가설 : 단어의 의미는 주변단어에 의해서 형성된다.
- 윈도우 크기 : 주변에 단어를 몇개나 포함할지 (연관성을 찾기 위해서)
- 단어간의 유사도 : 코사인유사도 이용해서 계산
2.4 통계 기반 기법 개선하기
- 점별 상호정보량(PMI) : the와 같은 단어의 빈도가 많이 발생하는 현상
- 양의 상호정보량(PPMI) : PMI에서 두 단어가 동시발생 횟수가 0인경우 문제 회피
- 차원감소 : 벡터의 차원을 줄이는 것 (중요한 정보는 최대한 유지)
L SVD (특잇값분해) - 고속 SVD를 이용하기 이해서 sklearn를 이용한다.
CHAPTER 3 word2vec
3.1 추론 기반 기법과 신경망
- 2장에서는 '통계기반기법' 이번장에서는 '추론기반기법'을 학습
- 통계 기반 기법의 문제점
L 100만 x 100만개의 큰 행렬을 만드는 현실적인 어려움 발생 - 통계기반은 한번에 과정을 수행하는데, 추론기반은 미니배치를 통해서 작게 나누어서 학습이 가능
- 문장에 대해서 원핫표현으로 구성
3.2 단순한 word2vec
- CBOW모델 : 맥락(주변의 단어)으로 부터 타깃(중앙단어)을 추측하는 용도의 신경망
3.3 학습 데이터 준비
3.4 CBOW 모델 구현
- MatMul계층과 Softmax with Loss계층을 사용
3.5 word2vec 보충
- 2가지 모델 : CBOW모델, skip-gram모델 (CBOW모델을 역전시킨 모델)
- skip-gram
- 단어 분산 표현의 정밀도 면에서 skip-gram모델의 결과가 더 좋은 경우가 많다.
- 학습속도는 CBOW모델이 더 빠르다. (skip모델은 손실을 맥락의 수만큼 구해야 되기 때문에)
- Glove기법 : word2vec이후 추론 기반과 통계기반 기법응 융햡한 기법
CHAPTER 4 word2vec 속도 개선
4.1 word2vec 개선 ①
- 어휘가 100만개, 은닉층에 100개의 뉴런이 있는 경우, 속도 문제 발생
- Embedding 계층을 도입한다.
- 기존의 MatMul계층을 Embedding계층으로 전환하여 진행
4.2 word2vec 개선 ②
- 은닉층 이후의 처리 (행렬 곱과 Softmax 계층의 계산)
- 네거티브 샘플링 기법 : 다중 분류에서 이진분류로 진행
- 이진분류 문제
L 시그모이드 함수를 적용해서 확률로 변환
L 손실 : 손실함수로 '교차 엔트로피 오차'를 사용
4.3 개선판 word2vec 학습
- ㄴ
- ㄴ
4.4 word2vec 남은 주제
- ㄴ
- ㄴ
4.5 정리
CHAPTER 5 순환 신경망(RNN)
5.1 확률과 언어 모델
5.2 RNN이란
- 순환신경망
- BPTT : 오차역전파법 (시간방향으로 펼친 신경망의 오차역전파법)
- Truncated BPTT : 시간 축 방향으로 너무 길어진 신경망을 적당한 지점에서 자르는 기법
L 데이터를 순서대로 제공하기
L 미니배치별로 데이터를 제공하는 시작위치 옮기기 - Time RNN : T개 단계분의 작업을 한꺼번에 처리하는 계층
5.3 RNN 구현
5.4 시계열 데이터 처리 계층 구현
5.5 RNNLM 학습과 평가
5.6 정리
CHAPTER 6 게이트가 추가된 RNN
6.1 RNN의 문제점
6.2 기울기 소실과 LSTM
6.3 LSTM 구현
6.4 LSTM을 사용한 언어 모델
6.5 RNNLM 추가 개선
6.6 정리
CHAPTER 7 RNN을 사용한 문장 생성
7.1 언어 모델을 사용한 문장 생성
7.2 seq2seq
7.3 seq2seq 구현
7.4 seq2seq 개선
7.5 seq2seq를 이용하는 애플리케이션
7.6 정리
CHAPTER 8 어텐션
8.1 어텐션의 구조
8.2 어텐션을 갖춘 seq2seq 구현
8.3 어텐션 평가
8.4 어텐션에 관한 남은 이야기
8.5 어텐션 응용
8.6 정리
APPENDIX A 시그모이드 함수와 tanh 함수의 미분
A.1 시그모이드 함수
A.2 tanh 함수
A.3 정리
APPENDIX B WordNet 맛보기
B.1 NLTK 설치
B.2 WordNet에서 동의어 얻기
B.3 WordNet과 단어 네트워크
B.4 WordNet을 사용한 의미 유사도
APPENDIX C GRU
C.1 GRU의 인터페이스
C.2 GRU의 계산 그래프
'book' 카테고리의 다른 글
262가지 문제로 정복하는 코딩 인터뷰 in Java (0) | 2021.10.16 |
---|---|
Must Have 박미정의 깃&깃허브 입문 - 리뷰 (0) | 2021.10.11 |
밑바닥부터 시작하는 딥러닝.1 (chap6 : 학습관련 기술들) (0) | 2021.09.13 |
밑바닥부터 시작하는 딥러닝.1 (chap5 : 오차역전파법) (0) | 2021.09.13 |
밑바닥부터 시작하는 딥러닝.1 (chap4 : 신경망 학습) (0) | 2021.09.13 |