밑바닥부터 시작하는 딥러닝2 - Chap6. 게이트가 추가된 RNN
·
공부/밑바닥부터 시작하는 딥러닝
5장에서 본 RNN은 순환 경로를 포함하여 과거의 정보를 기억할 수 있었다. 구조도 단순하여 구현이 쉬웠다.하지만 성능이 좋지 못하다. 그 원인은 시계열 데이터에서 시간적으로 멀리 떨어진, 장기 의존 관계를 잘 학습할 수 없다는 데 있다. 요즘에는 앞장의 단순한 RNN 대신 LSTM이나 GRU라는 계층이 주로 쓰인다.  LSTM이나 GRU에는 gate라는 구조가 더해져 있는데, 이 게이트 덕분에 시계열 데이터의 장기 의존 관계를 학습할 수 있다. RNN의 문제점앞장의 RNN은 시계열 데이터의 장기 의존 관계를 학습하기 어렵다. 원인은 BPTT에서 기울기 소멸 혹은 폭발이 일어나기 때문이다.  RNN 복습RNN계층은 시계열 데이터 xt를 입력하면 ht를 출력한다. ht는 RNN계층의 은닉 상태라고 하며, ..
밑바닥부터 시작하는 딥러닝2 - Chap5. 순환 신경망(RNN)
·
공부/밑바닥부터 시작하는 딥러닝
지금까지 살펴본 신경망은 피드포워드(feed forward)라는 신경망이다. 흐름이 단방향인 신경망을 말한다.다시 말해, 입력 신호가 다음 층(중간 층)으로 전달되고, 그 신호를 받은 층은 그 다음 층으로 전달하고, 다시 다음 층으로... 식으로 한 방향으로만 신호가 전달된다.  피드포워드 신경망은 구성이 단순하여 구조를 이해하기 쉽고, 그래서 많은 문제에 으용할 수 있다. 그러나 커다란 단점이 하나 있는데, 바로 시계열 데이터를 잘 다루지 못한다는 것이다. 정확하게 말하면, 단순한 피드포워드 신경망에서는 시계열 데이터의 성질(패턴)을 충분히 학습할 수 없다.그래서 순환 신경망(Recurrent Neural Network, RNN)이 등장하게 된다.  확률과 언어 모델 RNN을 시작하기 위한 준비 과정으..
밑바닥부터 시작하는 딥러닝2 - Chap4. word2vec 속도 개선
·
공부/밑바닥부터 시작하는 딥러닝
앞장에서 word2vec의 구조를 배우고 CBOW모델을 구현했다. 단순한 2층 신경망이라서 간단하게 구현할 수 있었다.이 구현에는 몇가지 문제가 있다. 가장 큰 문제는 말뭉치에 포함된 어휘수가 많아지면 계산량이 커져 계산 시간이 너무 오래걸린다.이러한 점 때문에 이번 장의 목표는 word2vec의 속도 개선으로 잡아보았다.첫번째 개선은 Embedding이라는 새로운 계층을 도입한다. 두번째로는 네거티브 샘플링이라는 새로운 손실 함수를 도입한다. 이 두가지 개선으로 PTB 데이터셋(실용적인 크기의 말뭉치)을 가지고 학습을 수행할 것이다. word2vec 개선 1 - Embedding앞장에서 CBOW 모델 구현 복습을 해보자.단어 2개를 contexts로 사용해, 하나의target을 추측한다.이때 가중치 W..
밑바닥부터 시작하는 딥러닝2 - Chap3. word2vec
·
공부/밑바닥부터 시작하는 딥러닝
이번 장의 주제도 단어의 분산 표현이다.앞장에서는 통계 기반 기법으로 단어의 분산 표현을 얻었는데, 이번 장에서는 더 강력한 기법인 추론 기반 기법에 대해 알아본다. 추론 기반 기법은 말 그대로 추론을 하는 기법이다. 이 추론 과정에서 word2vec 신경망을 이용한다. 목표는 단순한 word2vec 구현이다. 처리 효율을 희생하는 대신 이해하기 쉽도록 구성했기 때문이다.  추론 기반 기법의 신경망 단어를 벡터로 표현하는 방법은 지금까지 활발히 연구되었다. 그중 성공적인 기법을 크게 두 부류로 나눌 수 있는데, 통계 기반 기법과 추론 기반 기법이다. 단어의 의미를 얻는 방식은 서로 크게 다르지만, 그 배경에는 모두 분포 가설이 있다.  통계 기반 기법의 문제점 통계 기반 기법에서는 주변 단어의 빈도를 기..
밑바닥부터 시작하는 딥러닝2 - Chap2. 자연어와 단어의 분산 표현
·
공부/밑바닥부터 시작하는 딥러닝
자연어 처리가 다루는 분야는 다양하지만, 본질적 문제는 컴퓨터가 우리의 말을 알아듣게 만드는 것이다.이번 장에서는 고전적인 기법을 알아보고, 파이썬으로 텍스트를 다루는 연습도 겸한다.텍스트를 단어로 분할하는 처리나 단어를 단어 ID로 변환하는 처리 등을 구현한다. 자연어 처리란우리가 평소에 쓰는 말을 자연어라고 한다.자연어 처리(Natural Language Processing,NLP)를 문자 그대로 해석하면 자연어를 처리하는 분야이고, 우리 말을 컴퓨터에게 이해시키기 위한 기술이다. 일반적인 프로그래밍 언어는 기계적이고 고정되어 있다. 반면 자연어는 부드러운 언어이다. 똑같은 의미의 문장도 여러 형태로 표현할 수 있거나, 뜻이 애매할 수 있거나, 그 의미나 형태가 유연하게 바뀔 수 있다.  단어의 의미..
밑바닥부터 시작하는 딥러닝2 - Chap1. 신경망 복습
·
공부/밑바닥부터 시작하는 딥러닝
수학과 파이썬 복습밑바닥부터 시작하는 딥러닝1 내용을 복습해보자.신경망 계산에 필요한 vector나 matrix등에 관한 이야기이다.  벡터와 행렬신경망에서는 벡터와 행렬(또는 텐서)이 도처에서 등장한다. 벡터는 크기와 방향을 가진 양이다. 숫자가 일렬로 늘어선 집합으로 표현할 수 있으며, 파이썬에서는 1차원 배열로 취급할 수 있다.그에 반해 행렬은 숫자가 2차원 형태(사각형)으로 늘어선 것이다. 벡터는 단순한 개념이지만 이를 표현하는 방법이 두가지이므로 주의해야 한다.하나는 숫자를 세로로 나열하는 열벡터이고, 다른 하나는 가로로 나열하는 행벡터이다.수학과 딥러닝 등 많은 분야에서 열벡터 방식을 선호하지만,  이 책에서는 구현 편의를 고려해 행벡터로 다룬다. 다음은 벡터와 행렬을 numpy를 활용해 파이..
밑바닥부터 시작하는 딥러닝1 - Chap8. 딥러닝
·
공부/밑바닥부터 시작하는 딥러닝
딥러닝은 층을 깊게 한 심층 신경망이다. 여기서 사용하는 합성곱 계층은 모두 3x3크기의 작은 필터로, 층이 깊어지면서 채널 수가 더 늘어나는 것이 특징이다.합성곱 계층의 채널수는 앞 계층에서부터 순서대로 16, 16, 32, 32, 64, 64로 늘어난다.또 그림과 같이 풀링 계층을 추가하여 중간 데이터의 공간 크기를 점차 줄여간다.마지막 단의 완전연결 계층에서는 드롭아웃 계층을 사용한다.이외의 것들을 합쳐 정리하면 이 신경망의 특징은 다음과 같다.3x3의 작은 필터를 사용한 합성곱 계층활성화 함수는 ReLU완전연결 계층 뒤에 드롭아웃 계층 사용 Adam을 사용해 최적화가중치 초기값은 He 초기값이 신경망이 잘못 인식할 확률은 겨우 0.62%이다. 실제로 어떤 이미지를 인식하지 못했는지 살펴보자.이번의..
밑바닥부터 시작하는 딥러닝1 - Chap7. 합성곱 신경망(CNN)
·
공부/밑바닥부터 시작하는 딥러닝
이번장의 주제는 합성곱 신경망(convolutional neural network, CNN)이다.  전체 구조CNN도 지금까지 본 신경망과 같이 레고 블록처럼 계층을 조합하여 만들 수 있다.다만, 합성곱 계층(convolution layer)과 풀링 계층(pooling layer)이 새롭게 등장한다.지금까지 본 신경망은 인접하는 계층의 모든 뉴런과 결합되어 있다. 이를 완전연결(fully-connected,전결합)이라고 하며, 완전히 연결된 계층을 Affine계층이라는 이름으로 구현했다.Affine계층을 사용하면, 가령 층이 5개인 완전연결 신경망은 아래 그림과 같이 구현할 수 있다.그림과 같이 완전연결 신경망은 Affine 계층 뒤에 활성화 함수를 갖는 ReLU계층(혹은 Sigmoid계층)이 이어진다...
밑바닥부터 시작하는 딥러닝1 - Chap6. 학습 관련 기술들
·
공부/밑바닥부터 시작하는 딥러닝
매개변수 갱신신경망 학습의 목적은 손실 함수의 값을 가능한 한 낮추는 매개변수를 찾는 것이다.이 과정을 최적화(optimization)이라고 한다. 지금까지는 최적의 매개변수 값을 찾는 단서로 미분을 이용했다. 매개변수의 기울기를 구해 기울어진 방향으로 매개변수 값을 갱신하는 일을 반복해 점점 최적의 값에 다가갔다.이것이 확률적 경사 하강법(SGD)이란 단순한 방법이다. 최적화를 해야하는 상황을 모험가 이야기에 비유해 보았다.색다른 모험가가 있다. 광활한 메마른 산맥을 여행하면서 날마다 깊은 골짜기를 찾아 발걸음을 옮긴다.그는 전설에 나오는 세상에서 기징 깊고 낮은 골짜기, '깊은 곳'을 찾아가려 한다.그것이 그의 여행 목적이다. 게다가 그는 엄격한 '제약' 2개로 자신을 옭아맸다.하나는 지도를 보지 않..
밑바닥부터 시작하는 딥러닝1 - Chap5. 오차역전파법
·
공부/밑바닥부터 시작하는 딥러닝
오차역전파법오차역전법을 풀어쓰면 '오차를 역(반대 방향)으로 전파하는 방법(backward propagation of errors')이다.  계산 그래프계산 그래프(computational graph)는 계산 과정을 그래프로 나타낸 것이다.그래프는 노드(node)와 엣지(edge)로 표현된다.  문제 1: 현빈 군은 슈퍼에서 1개에 100원인 사과를 2개 샀습니다. 이 때 지불 금액을 구하세요. 단, 소비세가 10% 부과됩니다. 계산 그래프는 계산 과정을 노드와 화살표로 표현한다.노드는 원으로 표기하고 원 안에 연산 내용을 적는다. 계산 결과를 화살표 위에 적어 각 노드의 계산 결과가 왼쪽에서 오른쪽으로 전해지게 한다.문제 1을 계산 그래프로 풀면 아래 그림처럼 된다.x2와 x1.1을 각각 하나의 연산으..