순환신경망(Recurrent neural networks) 개요
-
Upload
byoung-hee-kim -
Category
Data & Analytics
-
view
81 -
download
10
Transcript of 순환신경망(Recurrent neural networks) 개요
순환신경망(Recurrent Neural Networks)for Sequential Pattern Modeling
2017-03-22
Lecture by Kim, Byoung-Hee
Biointelligence Laboratory
School of Computer Science and Engineering
Seoul National University
http://bi.snu.ac.kr
목 차
Part 1: 순환신경망(RNN)의 개요
Part 2: 순환신경망의 기본 모듈과 망의 구조 만들기
Part 3: 순환신경망의 적용 사례: 언어모델을 중심으로
Part 4: 순환신경망의 다양한 활용과 확장
부록
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 2
순환신경망의 개요
Part 1
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 3
인공신경망(artificial neural networks) 리뷰
신경세포(뉴런)의 망으로 구성된 뇌를 모사하여 계산 모델을 구성
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 4
입력 출력
정보의 흐름(feedforward)
뉴런
신경망
리뷰: 인공신경망에 쓰이는 활성화 함수Neural Network Activation Functions
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 5
(A. Graves, 2012)
𝑅𝑒𝐿𝑈 𝑥 = max(𝑥, 0)
Rectified Linear Unit
[장점]
• Hidden unit에 sparsity가 나타난다• Gradient vanishing 문제가 없다• 계산이 단순해져 학습이 빠르면서 성
능 향상에도 일조
- 입력값을 처리하여 ON 또는 OFF 출력. 보통 출력값에 상, 하한을 두려 함- 신경망에서는 ‘미분 가능한’ smooth한 S자 모양 함수를 적용- 최근 딥러닝 모델에서는 ReLU를 선호- 순환신경망 내부에서는 sigmoid와 tanh 함수를 적용함
순서가 있는 패턴의 모델링
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 6
동역학 시스템. ODE, PDE
통계적 모델. Stochastic process. ARMA, ARIMA
HMM (Hidden Markov Model) &
SSM (State Space Model)
RNN (Recurrent Neural Networks)
Kalman Filter
, , , , , …
Kalman filter
확률그래프 모델
신경망 모델
수리적 모델
“welcome”
순서 데이터 모델링 사례:
말과 글을 인식하고 이해하고 대응하는 S/W
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 7
‘Hound’ by Soundhound
(Figure from ICML 2014 tutorial by Li Deng)
딥러닝, 음성 인식의 수준을 한 단계 올리다
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 8
단어 수가 적은제한적 상황
단어 수가 많은일상적 상황
• 전화통화음성 자동 인식 문제(switchboard)에서 99년 이후10여년 동안 성능 정체
• Microsoft Research: 2010년 딥러닝 기술로 단어 인식 오류율을~23% 에서 <15% 로 줄임(Rick
Rashid’s의 시연에서는 7% 이하)!
• Google: 2012년부터 딥러닝 적용.
2015년 RNN 기반으로 성능 대폭향상
• IBM Watson 팀은 switchboard 에대해 2015년 오류율 8%, 2017년5.5%를 달성 (사람: 5.1%)
순환신경망의 기본 구조
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 9
순환(recurrent) 연결
입력
출력
RNN
모듈
“인공 뉴런(뇌세포)”
순환신경망 as API
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 10
API: 응용프로그램 인터페이스(application program interface)
입력 출력
상태(state)의 변화
RNN의 기본 활용 분야
순서 데이터에 꼬리표 달기(Sequence labeling)
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 11A. Graves, Supervised Sequence Labelling with Recurrent Neural Networks, 2012.
문서 감정 분류Sentiment classification
필기체인식
음성인식
RNN의 기본 활용 분야
시계열 예측(time series prediction)
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 12
Blue=Whole Dataset, Green=Training, Red=Predictions
Airline Passengers (1949~1960)
개월
(천 명)
RNN의 기본 활용 분야
파형 생성(Spike or periodic function generation)
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 13
Gers, Schraudolph and Schmidhuber, Learning Precise Timing with LSTM Recurrent Networks, JMLR, 2002.
Generating Timed Spikes (GTS) Periodic Function Generation (PFG)
RNN의 다양한 적용 방법과 사례
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 14
무엇을 입력하고 출력하는지에 따라 유연하게 활용할 수 있다.
소비자의 상품평(글)이긍정적인지 부정적인지 판별
한국어영어 자동 번역
사진을 한 장 주면, 사진의 설명 문장을 생성
예: 블랙박스 영상을 프레임 단위로 입력받아 사고 발생여부 판별
순환신경망의 ‘기본적인‘ 설정. 매 입력마다 출력반응을 생성
오늘은 이거 하나만 알고 가셔도 충분합니다.
입력
출력
RNN
모듈
RNN의 다양한 적용 방법과 사례
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 15
사진을 좌에서 우로, 위에서 아래로순서대로 훑으면서사진 속의 물체를 인식하거나 생성
입력이 순서가 없는 고정된 모양(예: 사진)이어도, 적절한 순서에 따라 ‘처리’할 수 있다.
RNN 적용 대표 사례:
필기체 인식, 합성, 생성
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 16
INPUT OUTPUT
Doosan. Building your tomorrow today
Proud Global Doosan
(none)
펜으로 필기하는 과정을 순환신경망으로 학습
체험해봅시다 1: 영어 필기체 합성
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 17
접속
• Alex Graves의 데모 페이지 접속
• http://www.cs.toronto.edu/~graves/handwriting.html
글자입력
• 영어로 100글자까지 ‘Text’란에 입력
• 되도록이면 소문자 위주로 입력하세요.
스타일
• 필기체 스타일 선택: Style
• 글자를 정자체로 쓸지 갈겨 쓸지 선택: bias (오른쪽으로 밀 수록 정자체에 가까움)
샘플
• 몇 개의 필기체를 생성할지 지정
• 각 샘플은 jpg 파일로 다운로드 가능
There’s no place like home.Let’s count: 1, 2, 3
RNN 적용 대표 사례: 뉴럴 음성 인식기
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 18
Baidu, DeepSpeech2 (2015)
하나의 딥러닝 모델로, 영어와 중국어를 모두 인식
RNN 모듈을 여러 층을 쌓아 복잡한 문제를 해결
RNN 적용 대표 사례: 뉴럴 기계번역Neural Machine Translation (NMT)
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 19
https://research.googleblog.com/2016/09/a-neural-network-for-machine.html
입력에 대한 RNN과 출력에 대한 RNN을 연결하여 구성
구글 뉴럴 기계번역기(2016)
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 20
전체 구성은 Encoder-Decoder
Encoder와 Decoder는 각각 8층의 순환신경망으로 구성순환신경망을 구성하는 기본 모듈로는 LSTM을 사용
RNN 적용 대표 사례:
지문을 보고 질문에 대해 답하기
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 21
Memory Network: 순환신경망에 외부 메모리를 붙인 모델
딥러닝 모델의 조합
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 22
(Y. Lecun, Y. Bengio, and G. Hinton, 2015)
http://www.nature.com/nature/journal/v521/n7553/fig_tab/nature14539_F3.html
CNN과 RNN을 조합하여 이미지의 캡션을 자동으로 생성
이미지 캡션 생성 모델
23
이미지 캡션 생성 사례
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 24
놀라울 정도로 정확한 설명도 나오지만(윗줄), 엉뚱한 결과를 내기도 한다(하단)
Part 1 요약
순환신경망(RNN)은 딥러닝의 핵심 도구 중 하나
인공신경망이 순서가 있는 데이터(text, audio, video 등)를
자연스럽게 다루게 해주는 도구
언어 지능, 음성 지능, 시각 지능을 구현하는데 필수 도구
순서 데이터를 이해하고, 주석을 달며, 새로 만들어내기도 함
다른 모델과 결합하여 다중 지능을 구현하는데 기여함
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 25
순환신경망의 기본 모듈과망의 구조 만들기
Part 2
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 26
‘간단한’ 수학식을 하나 살펴봅시다
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 27
x
y
y = wx + b
순환신경망의 기본 동작을 이해하는 데는선형(linear) 식과 몇 가지 비선형(non-linear) 함수만 알면 충분합니다.
기울기,
가중치weight
절편,
bias
입력
출력
고차 공간을 둘로 나누는 ‘하이퍼평면’
리뷰: 인공신경망에 쓰이는 활성화 함수Neural Network Activation Functions
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 28
(A. Graves, 2012)
𝑅𝑒𝐿𝑈 𝑥 = max(𝑥, 0)
Rectified Linear Unit
[장점]
• Hidden unit에 sparsity가 나타난다• Gradient vanishing 문제가 없다• 계산이 단순해져 학습이 빠르면서 성
능 향상에도 일조
- 입력값을 처리하여 ON 또는 OFF 출력. 보통 출력값에 상, 하한을 두려 함- 신경망에서는 ‘미분 가능한’ smooth한 S자 모양 함수를 적용- 최근 딥러닝 모델에서는 ReLU를 선호- 순환신경망 기본 모듈의 내부에서는 sigmoid와 tanh 함수를 적용함
시스템의 상태(state)에 대해 이해해봅시다
상태, 상태의 변화
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 29
State-transition digram
시스템의 상태(state)에 대해 이해해봅시다
보통 우리는 직접 볼 수 없는 ‘숨겨진, 알려지지 않은 상태에관심이 있습니다
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 30
• 목표: 순서대로 주어지는 관측값을 보고, ‘숨겨진 상태(hidden’ states)’를 추적하거나 학습
순환신경망의 기본 개념
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 31
입력:
여러 개의 값이벡터 형태로 일괄 전달됨
특정 시점에서출력을 뽑는다.
예) 예측상태의 변화(hidden)
이제까지의 강의에서 본 바와 같이연결선(화살표)마다 ‘가중치(weight)’가 부여됨
순환신경망의 기본 개념
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 32
(Slide from Stanford CS231n 2015~2016 winter class)
RNN은 외부 입력과 자신의 이전 상태를 입력받아 자신의 상태를 갱신한다.
순환신경망의 기본 개념
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 33
(Slide from Stanford CS231n 2015~2016 winter class)
모든 시간대에서 동일한 매개변수(parameter)를 적용!
기본 순환신경망
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 34(Slide from Stanford CS231n 2015~2016 winter class)
모든 시간대에서 동일한 매개변수를 적용: Whh , Wxh ,Why
(bias는 식에서 생략되어 있음)
RNN의 계산 그래프 표현Computational Graphs for RNN
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 35
모든 시간대에서 동일한 매개변수를 적용: Whh , Wxh , bh
1tanh( )
t hh t xh t hh W h W x b
RNN 내부의 동작은 곱셈, 덧셈, 활성화 함수 적용만 알면 이해할 수 있습니다.
(하얀 노드: operation, 노드 간 연결: tensor)
Images from Graham Neubig, Neural Machine Translation and Sequence-to-sequence Models: A Tutorial, arXiv:1703.01619v1
Recurrent Neural Networks
시간축을 따라 펼친 RNN은 무제한 개의 층을 가지는 딥 신경망으로도볼 수 있습니다.
𝑥𝑡: input at time 𝑡
𝑠𝑡: hidden state at time 𝑡 (memory of the network).
𝑓: is an activation function (e.g, 𝑡𝑎𝑛ℎ() and ReLUs).
U, V, W: network parameters (unlike a feedforward neural network, an RNN
shares the same parameters across all time steps).
g: activation function for the output layer (typically a softmax function).
y: the output of the network at time 𝑡
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr
𝑠𝑡 = 𝑓 𝑈𝑥𝑡 +𝑊𝑠𝑡−1
)𝑦 = 𝑔(𝑉𝑠𝑡
36
(이 그림과 기호를 익혀두면, RNN 프로그램을 살펴볼 때 이해가 빠릅니다)매개변수 기호를 간략히 표현: U, V, W
(Slide from ‘Deep Learning’ Book Seminar of BI Lab)
Computing the Gradient
in a Recurrent Neural Network The use of back-propagation on the unrolled graph is called
the back-propagation through time (BPTT) algorithm The backpropagation algorithm can be extended to BPTT by unfolding RNN in time
and stacking identical copies of the RNN.
As the parameters that are supposed to be learned (U, V and W) are shared by all
time steps in the network, the gradient at each output depends, not only on the
calculations of the current time step, but also the previous time steps.
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr
순환신경망 학습 과정에서는 BPTT 알고리즘이 적용됩니다.
BPTT 알고리즘은
• 계산 그래프에서 화살표 역방향으로
• 출력의 오차 정보를 담은 미분값(gradient)을 전달하여
• 순차적으로 망의 중간에 있는 매개변수를 갱신하는 절차입니다.
37(Slide from ‘Deep Learning’ Book Seminar of BI Lab)
순환신경망을 이용한 언어 모델
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 38(Slide from Stanford CS231n 2015~2016 winter class)
다음에 무슨 글자 또는 단어가 나올지 예측하는 모델
(one-hot encoding)
순환신경망을 이용한 언어 모델
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 39(Slide from Stanford CS231n 2015~2016 winter class)
다음에 무슨 글자 또는 단어가 나올지 예측하는 모델
• 출력: 각 글자별 ‘확신’ 정도• 녹색 값이 높고,
빨간 색 값이 낮도록매개변수 W_*를 조정(학습)
학습 단계
체험해봅시다 2: 내가 그린 기린 그림
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 40
1. Google AI Experiment 페이지에서 Quick, Draw! 페이지에 접속
https://aiexperiments.withgoogle.com/quick-draw
3. 컴퓨터가 그려달라는 사물을 확인하고
4. 빠르게(20초 이내에) 그리면서컴퓨터가 얼마나 잘 맞추는지 살펴봅시다
2. 시작 버튼 누르기
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 41
이제 순환신경망의 대표 모듈인
LSTM을 살펴볼 차례입니다.
장단기 메모리(LSTM):
기본 순환신경망의 확장
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 42
복잡한 문제를 풀기 위해 여러 층을 쌓을 필요가 생기는데,
이 때, 기본 RNN은 여러 가지 문제가 생깁니다. gradient exploding or vanishing 오류 정보 전달 실패 big model cannot learn well
(Slide from Stanford CS231n 2015~2016 winter class)
Long-Term Dependencies
43
The clouds are in the sky
http://colah.github.io/posts/2015-08-Understanding-LSTMs/© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr
바로 얼마 전의 입력값은 잘 기억하여 반영할 수 있습니다.
(short-term memory)
Longer-Term Dependencies
44http://colah.github.io/posts/2015-08-Understanding-LSTMs/© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr
보다 이전의 입력 정보가 오래 기억되어 전달되도록 하기 위해서는(long-term memory) 메모리의 구조를 개선해야 합니다.
장단기 메모리(Long Short-Term Memory)
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 45
연구자들은 LSTM의 동작을 설명하기 위해여러 가지 방식으로 그림으로 표현합니다.
LSTM에는 입력, 기억, 출력의 정도를 조절하는 세 개의 게이트(gate)가 있습니다.
기본 순환신경망과 달리, 내부에 cell이 추가되었습니다.
(Slide from Stanford CS231n 2015~2016 winter class)
장단기 메모리(Long Short-Term Memory)
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 46
망각(forget) 게이트 입력(input) 게이트
출력(output) 게이트
: element-wise product
(같은 크기의 두 벡터 또는 행렬을 각 원소끼리 곱하는 연산)
LSTM의 동작은 수식으로는 ‘간단히’ 표현됩니다.(프로그램을 짤 때도 이 계산식만 넣으면 됩니다)
1tanh( )
t hh t xh th W h W xVanilla RNN에서의 상태 업데이트
LSTM에서의 상태 업데이트 1tanh( )
hh t xh tg W h W x
이전 셀 상태(c)를 잊고 새로운 입력 상태(g)를 반영할지 여부를 조정
(Slide from Stanford CS231n 2015~2016 winter class)
LSTM의 동작을 순서대로살펴보기(애니메이션)
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 47
(동그라미 안의 기호는 곱하기와 더하기입니다)
(Slide from Stanford CS231n 2015~2016 winter class)
LSTM의 동작을 순서대로살펴보기(애니메이션)
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 48
(동그라미 안의 기호는 곱하기와 더하기입니다)
(Slide from Stanford CS231n 2015~2016 winter class)
LSTM의 동작을 순서대로살펴보기(애니메이션)
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 49
(동그라미 안의 기호는 곱하기와 더하기입니다)
(Slide from Stanford CS231n 2015~2016 winter class)
LSTM의 동작을 순서대로살펴보기(애니메이션)
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 50
(동그라미 안의 기호는 곱하기와 더하기입니다)
(Slide from Stanford CS231n 2015~2016 winter class)
LSTM의 동작 이해
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 51(Slide from Stanford CS231n 2015~2016 winter class)
RNN vs. LSTM
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 52
(additive interaction)
(Slide from Stanford CS231n 2015~2016 winter class)
RNN vs. LSTM
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 53(Slide from Stanford CS231n 2015~2016 winter class)
RNN vs. LSTMVanishing Gradient
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 54
RNN
LSTM
시간이 지나면 이전 입력값을 잊어버린다
• 은닉노드의 입력, 망각, 출력 게이트가 각각 노드의 하단, 좌측, 상단에 작은 원으로 표시되었으며, 열린 상태(○)
와 닫힌 상태(-)로 간략히 표기
• 이전 입력값의 정보가 계속 저장되어필요한 시점에 출력에 반영된다
(figures from A. Graves et al., A novel connectionist system for unconstrained handwriting recognition, IEEE T PAMI, 2009.)
LSTM의 변형 모델
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 55
GRU (gated recurrent unit)는 LSTM을 간략화한 모델
리셋(r)과 업데이트(z)의 두 개의 게이트가 있다. Cell이 없다.
모듈 구성과 연결 구조에 따라다양한 변형 가능
(Slide from Stanford CS231n 2015~2016 winter class)
기본 RNN의 또다른 표현
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 56
𝑋𝑡
ℎ𝑡−1 ℎ𝑡
𝑌𝑡
Simple RNN
Gated Recurrent Unit (GRU)
57
𝑋𝑡
ℎ𝑡−1 ℎ𝑡
𝑌𝑡
Gated Recurrent Unit
𝑟 𝑧
෨ℎ +
Dynamic Gate
0~1Reset Gate
0~1
𝒓 𝒛𝟏 − 𝒛
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr
node state
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 58
여기까지 순환신경망의 기본 모듈을 살펴보았습니다.
이제 기본 모듈로 어떤 망을 구성하고
어떻게 쓸 수 있는지 살펴보겠습니다 .
RNN의 다양한 적용 방법과 사례(다시보기)
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 59
무엇을 입력하고 출력하는지에 따라 유연하게 활용할 수 있다.
소비자의 상품평(글)이긍정적인지 부정적인지 판별
한국어영어 자동 번역사진을 한 장 주면, 사진의 설명 문장을 생성
예: 블랙박스 영상을 프레임 단위로 입력받아 사고 발생여부 판별
순환신경망의 ‘기본적인‘ 설정. 매 입력마다 출력반응을 생성
입력
출력
RNN
모듈
(Slide from Stanford CS231n 2015~2016 winter class)
𝑥𝑡
ℎ𝑓𝑡
ℎ𝑏𝑡
ℎ𝑡
𝑥𝑡+1
ℎ𝑓𝑡+1
ℎ𝑏𝑡+1
ℎ𝑡+1
𝑥𝑡+2
ℎ𝑓𝑡+2
ℎ𝑏𝑡+2
ℎ𝑡+2
forward
backward
양방향 순환신경망Bi-directional RNN
시간의 순방향을 따르는 RNN과 역방향을 따르는 RNN을 각각 두고,
두 RNN의 출력을 합쳐 하나로 출력합니다.
음성 인식, 필기체 인식 등에서 표준적으로 적용됩니다.
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 60
다층 구조, 딥 구조 만들기
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 61
Residual connection
Skip connectionInput-to-hidden
Hidden-to-output
Usual stacking
단순히 층을 쌓기보다는 (stacking)
매 층이 잔차 계산을 하도록 구성하거나 (residual connection) ,
층 간 점프를 허용하는 구성을 통해 (skip connection)
학습의 효율, (속도와) 정확도를 높입니다.
' ( )x x F x
identity mapping with residual
residual
(figure from Graves, 2013)
(figure from Google’s NMT paper, 2016)
인코더-디코더 신경망
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 62
인코더 또는 디코더를 순환신경망으로 구성
Part 4에서 인코더-디코더 신경망에 대해 조금 더 살펴보겠습니다.
자동으로 답장 메일 보내는 모델을 LSTM 기반의 인코더-디코더 모델로 구성한 사례
https://research.googleblog.com/2015/11/computer-respond-to-this-email.html
Part 2 요약
순환신경망의 기본 구성 모듈 Vanilla RNN, LSTM, GRU
장단기 메모리(LSTM)와 GRU의 내부 동작 ‘게이트’를 이용하여 입력값의 반영 과정과 상태의 변화, 출력 조정
순서 데이터에서 ‘long-term dependency’를 잘 반영하는 모델이 좋은모델!
순환신경망의 기본 모듈로 구성하는 다양한 망의 구조 양방향, 다층/딥 구조, 인코더-디코더
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 63
순환신경망의 적용 사례:
언어모델을 중심으로
Part 3
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 64
언어 모델 (Language Model)
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 65
Learning to generate (discrete) sequences
u v
u' v
u'' v
Variable-order context
can used to predict v
6-gram
5-gram
4-gram
Bi-gram을 연결하여 문장 생성
Uni-gram의 빈도로Word Cloud 만들기
?
음악 생성: 다음에 나올 음은?
(slides from https://web.stanford.edu/class/cs124/lec/languagemodeling.pdf)
(확률 기반) 언어 모델
목표: 문장별 확률을 계산
왜?
어떻게?
문장에서 단어 또는 글자의 순서에 대한 분포를 이용
보통 다음 단어 예측하는 문제로 처리
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 66
(contents from https://web.stanford.edu/class/cs124/lec/languagemodeling.pdf)
언어 모델: n-그램 기반 분석
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 67
https://books.google.com/ngrams
언어 모델: n-그램 기반 분석
Stanford Sentiment Treebank:
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 68
유명한 영화 리뷰 사이트인 rottentomatoes.com의
영화평에 대해 Amazon Mechanical Turk을 이용하
여 사람들에게 sentiment를 평가하도록 해보았다.
N-그램 통계 분석 결과
•짧은 n-그램은 대부분 중립적
•긴 n-그램의 빈도는 대체로 균일
•극단적인 평은 매우 적음
Contents from https://cs.uwaterloo.ca/~mli/presentation_BoruiYe.pdf
RNN의 ‘마법같은’ 성능
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 69
Stanford Computer Vision Lab (Prof. Fei-Fei Li)
ImageNet 구축, 대회 주관
순환신경망 언어 모델
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 70(Slide from Stanford CS231n 2015~2016 winter class)
문서 집합(document corpus)단어 또는 글자
(word or character)
순환신경망을 이용한 언어 모델
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 71
(Slide from Stanford CS231n 2015~2016 winter class)
기존에는 단어 단위 언어 모델 적용글자 단위 RNN 언어 모델의 놀라운 성능
• 출력: 각 글자별 ‘확신’ 정도• 녹색 값이 높고,
빨간 색 값이 낮도록매개변수 W_*를 조정(학습)
학습 단계
테스트(추론) 단계
• 한 글자를 입력• 글자별 확률값이 출력됨• 이 확률분포에서 글자를
하나 샘플링• 선택한 글자를 다음 입력
으로 사용
세익스피어 희곡을 학습
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 72(Slide from Stanford CS231n 2015~2016 winter class)
입력: 세익스피어의 모든 희곡(4.4MB) RNN 모델: LSTM[512] * 3 layer
구조적 문서를 학습
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 73(Slide from Stanford CS231n 2015~2016 winter class)
입력: LaTeX 문서(16MB)
HTML, XML 등과 같은 문서도 잘 학습하고 생성함
프로그램(code)을 학습
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 74(Slide from Stanford CS231n 2015~2016 winter class)
리눅스 소스 코드(474MB)를 학습한 후, 유사한 C 코드를 생성
분석: 반복학습을 통해 성능 향상
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 75(Slide from Stanford CS231n 2015~2016 winter class)
분석: ‘뉴런’ (LSTM Cell)별 활성화
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 76(Slide from Stanford CS231n 2015~2016 winter class)
입력 글자에 따라 hidden state 값이 발화에 특정 패턴을 보이는 cell을 찾기
“”… a large portion of cells that do not do anything interpretable…”
분석: ‘뉴런’ (LSTM Cell)별 활성화
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 77(Slide from Stanford CS231n 2015~2016 winter class)
“… about 5% of them turn out to have learned quite
interesting and interpretable algorithms…”
입력 글자에 따라 hidden state 값이 발화에 특정 패턴을 보이는 cell을 찾기
분석: ‘뉴런’ (LSTM Cell)별 활성화
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 78(Slide from Stanford CS231n 2015~2016 winter class)
입력 글자에 따라 hidden state 값이 발화에 특정 패턴을 보이는 cell을 찾기
분석: ‘뉴런’ (LSTM Cell)별 활성화
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 79(Slide from Stanford CS231n 2015~2016 winter class)
입력 글자에 따라 hidden state 값이 발화에 특정 패턴을 보이는 cell을 찾기
공개된 char-rnn 코드의 다양한 활용
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 80
그리고, 음악도 생성합니다!
https://highnoongmt.wordpress.com/2015/05/22/lisls-stis-recurrent-neural
-networks-for-folk-music-generation/
https://soundcloud.com/seaandsailor/sets/char-rnn-composes-irish-folk-music
순환신경망으로 음악 생성하기
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 81Img source: http://yoavz.com/music_rnn/
LSTM Realbook: Generation ofJazz chord progressions
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 82
https://keunwoochoi.wordpress.com/2016/02/19/lstm-realbook/
Char-RNN / Word-RNN
Character(word)-level language models
an LSTM cell
Preprocess into text-format scores
Keras and Theano codes(https://github.com/keunwoochoi/lstm_real_book)
Dataset configuration
Results (click to hear)
체험해봅시다 3: 컴퓨터와 피아노 듀엣
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 83
1. Google AI Experiment 페이지 중 Google Magenta 프로젝트 팀의 데모 접속
https://aiexperiments.withgoogle.com/ai-duet
2. 시작 버튼 누르기 3. AI와 교대로 피아노를 연주하세요(건반을 마우스로 오래 누르면
길게 소리납니다.)
Part 3 요약
언어 모델(language model)
기존에는 n-gram 모델이 많이 쓰임
순환신경망을 이용한 언어 모델
단어 단위 언어 모델
글자 단위 언어 모델
순환신경망 언어 모델의 효용성
다양한 문서 생성
(기호 수준의) 음악 생성
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 84
순환신경망의 다양한 활용과 확장
Part 4
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 85
다양한 RNN 모듈
Phased LSTM: Accelerating Recurrent Network Training for Long or
Event-based Sequences (NIPS 2016)
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 86Visual-Auditory Sensor Fusion for Lip Reading
Frequency discrimination task
N-MNIST experiment.
(a) Sketch of digit movement seen by the image sensor.
다양한 RNN 모듈
Using Fast Weights to Attend to the Recent Past (NIPS 2016)
the benefits of using fast weights in the multi-level visual attention model
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 87
Integrating glimpses in visual attention models
Given the input face image, the goal is to classify the subject’s facial
expression into one of the six different categories: neutral, smile, surprise,
squint, disgust and scream. The task is more realistic and challenging than
the previous MNIST experiments. Not only does the dataset have
unbalanced numbers of labels, some of the expressions, for example squint
and disgust, are are very hard to distinguish. In order to perform well on this
task, the models need to generalize over different lighting conditions and
viewpoints
필기체 생성, 합성 http://www.cs.toronto.edu/~graves/
handwriting.html
댄스 생성 http://peltarion.com/creative-ai
RNN 기반의 DL로 댄스 생성
필기체 생성과 유사한 기법이핵심적으로 사용됨
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 88
혼합 밀도망(Mixture Density Network)
신경망 또는 순환신경망이 확률분포를 정하는 데 필요한 매개변수를 출력
펜의 다음 위치를 Gaussian Mixture로 모델링
Stacked Bidirectional LSTM
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 89
자연어 처리(NLP)에 적용한 Stacked Bidirectional LSTM
http://book.paddlepaddle.org/index.en.html
Baidu에서는 양방향 RNN을 다른 방식으로 구현함
인코더-디코더 신경망 모델
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 90
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 91
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 92
보다 깊은 추론(Reasoning)을 위한 확장-
Attention & Memory
Reasoning, Attention, Memory (RAM)
NIPS Workshop 2015
• In order to solve AI, a key component is the use of long term dependencies as
well as short term context during inference
• To combine memory with reasoning, a model must learn
how to access it, i.e. to perform *attention* over its
memory• Attention: positive results on machine translation and image captioning
• Memory
• Small short-term memory
• Large long-term memory
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 93
워크샵 소개문
Neural Turing Machine
• 신경망(NN): [External Input, External Output] 형태의 대규모
관측 데이터에서 학습
• 순환 신경망(RNN): 순환 NN에 내장 메모리 기능 추가
• 뉴럴 튜링 머신(NTM): 외장 메모리와 결합된 NN. 사람의
단기적 작업기억 (working memory) 능력 모사
RNN (LSTM) 대비 복사(copy) 성능 비교
[A. Graves, G. Wayne, I. Danihelka, 2014]
동적 N-gram 모델 (이진 비트, 6-gram)
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 94
연구: Memory Networks
Class of models that
combine large memory
with learning component
that can read and write to
it.
응용 자연어 문서 읽고 이해하기
자동 질의응답(Q&A)
모델 Dynamic MN
End-to-end MN
구성: 네 가지 요소 I: (input feature map) this
converts incoming data to
the internal feature
representation.
G: (generalization) this
updates memories given
new input.
O: this produces new output
(in feature representation
space) given the memories.
R: (response) converts
output O into a response
seen by the outside world.
[J. Weston, S. Chopra, A. Bordes, 2015]
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 95
(메모리넷의 상세한 소개 자료는 부록 참조)
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 96
체험해봅시다 4: 설명으로 사진 찾기
97
http://cs.stanford.edu/people/karpathy/deepimagesent/rankingdemo/
2. 검색 문장을 입력해보세요예) A city street corner from a park view
[그림 테두리 색]
- 빨강: 부적절한 검색 결과- 초록: 성공적 검색- 노랑: top 5에 포함되지 않은 정답 사진
3. 검색된 그림을 클릭하여 분석 결과를 확인해보세요
1. Andrej Karpathy의 데모 홈페이지에 접속
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 98
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 99
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 100
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 101
기존 RNN 모듈(예: LSTM)의 셀은 학습 과정에서 ‘메모리’와‘컨트롤러’가 혼재되어 생성된다
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 102
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 103
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 104
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 105
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 106
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 107
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 108
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 109
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 110
Part 4 요약
‘좋은’ RNN 모듈 연구는 현재 ‘핫 토픽’
예) Phased LSTM, Using fast weights, …
강화학습(RL)을 이용하여 새로운 모듈 구조를 학습하기도 함
RNN의 다양한 구조와 활용 혼합 밀도망 (Mixture Density Network)
Seq2Seq, 인코더-디코더 망
CNN과 결합한 인코더-디코더 망
RNN의 확장(augmentation)
메모리를 추가
주의집중(attention) 기작을 추가
RNN as a controller
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 111
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 112
Keras를 이용한 RNN 실습
주제 1: Text Generation 언어 모델: 영어 문서를 낱글자 단위로 학습 학습한 모델로 한 글자씩 문장을 생성 데이터: ‘이상한 나라의 앨리스’
주제 2: Sequence Classification Sequence labeling / classification
영화평이 positive한지 negative한지 분류 데이터: IMDb의 영화평 모음
주제 3: Time Series Prediction 회귀(regression) 방식으로 시계열 예측 항공 승객 수의 변화를 예측 데이터: 항공 승객 수 데이터(1949~1960)
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 113
기초 개념 이해 보조 자료
부록
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 114
모델은 무엇이고 왜 필요한가요?
나머지 18장의 그림은 여기에서 확인: https://www.facebook.com/JSYoo86/posts/1358264517564445
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 115
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 116(slides by 고재형)
vectors are the natural language of neural networks
(C. Olah & S. Carter)
bias를 벡터/행렬 연산에 포함시키기
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 117(slide by 고재형)
weight가 1로 고정된 추가의 입력으로 처리
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 118
Image source: https://blogs.nvidia.com/blog/2016/07/29/whats-difference-artificial-intelligence-machine-learning-deep-learning-ai/
인공지능: 어떻게 똑똑한 컴퓨터 시스템을 만들 것인가?
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 119
세상(world)을 인식하고 이해할 필요가 있다
기본적인 음성 및 시각 능력
언어 이해
행동 예측
컴퓨터 비전Computer Vision
자연언어 처리/이해Natural Language
Processing / Understanding
음성 인식Speech Recognition
+ 지능적인 행동을 해야 한다 지능형 에이전트Intelligent Agent
꼭 딥러닝을 써야 하나요?
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 120
많은 분들이 딥러닝을 배우고 계시고 이것을 현업에 적용하고 싶어 하십니다. 그래서 모두 건너뛰고딥러닝만 파고 계시는 분들도 많죠.
하지만 딥러닝이 꼭 다른 머신러닝들보다 좋은 성능을 내느냐 하면 그건 아닙니다.
머신러닝엔 "더 좋은" 알고리즘이란 건 없고 본인의 문제에 "더 적합한" 머신러닝이 있을 뿐이니까요.
"머신러닝은 프로그래밍이 아니라 디버깅이다.“
많은 전문가들이 처음부터 복잡한 모델을 쓰기보단 간단한 것에서 시작해 문제를 파악하고 그것을점진적으로 해결하는 방법을 추천합니다.
- 테리의 딥러닝 토크 중 (Terry Taewoong Um)
딥러닝, 머신러닝 교과서
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 121
For developers and engineersFor researchers (and students)
Memory Networks
부록
© 2017, SNU CSE Biointelligence Lab., http://bi.snu.ac.kr 122
(slides by Kyung-Min Kim)
메모리가 필요한 순환신경망
1. 메모리 네트워크
• U, W, V
• 은닉 유닛들은 연속된벡터공간에서 오래 전 데이터정보를 저장
• 길이가 매우 긴 입력 데이터가주어진다면 은닉 유닛 벡터는제한된 저장 공간에 많은 입력정보를 저장해야함
st = tanh(Uxt + Wst-1)
yt‘ = softmax(Vst)
input
input
input
hidden
hidden
hidden
outp
ut
outp
ut
outp
ut
time
U U U
W W W
V V V
input
hiddenoutp
ut
U
W
Vunfold
예> 순환신경망으로 QA 모델 만들기
1. 메모리 네트워크
2017년은 앞으로의 산업계를 완전히 바꿔놓을 새로운 기술이 본격 자리 잡는 한 해가될 것이다. 앞으로 업계 변화를 주도할 기술은 무엇일까.
…두 번째는 머신러닝(기계학습)을 통한 창조성 강한 디자인 등장이다. 머신러닝은 학습을 통해 사물을 구별하고 이를 바탕으로새로운 것을 창조하는 단계에 이르렀다. 최근 `디자인 그래프`라 불리는 프로젝트로구현됐다. …
Q. 머신러닝으로 새로운 디자인을 창조하고자 하는프로젝트 이름은 무엇인가?
QA 모델A. 디자인 그래프
input
input
input
hid
den
hid
den
hid
den
U U U
W W WW
input
input
input
hid
den
hid
den
hid
den
U U U
W W W …
문서 정보를 담고 있는 은닉 벡터
Question representation
질의 정보를 담고 있는 벡터
X
답변 생성
해결책1: 양방향 순환신경망 (bi-directional RNN)
• 앞방향 순환신경망: 원본 문장의 가장 앞의 단어부터 인코더 순환신경망의 입력으로 주어짐
• 뒷방향 순환신경망: 원본 문장의 가장 뒤의 단어부터 인코더 순환신경망의 입력으로 주어짐
• 인코더 순환신경망의 은닉 유닛은 앞방향 / 뒷방향 순환신경망의 은닉 유닛을 단순 이어붙임(concatenation)
input
input
input
hidden
hidden
hidden
U U U
W W W
input
input
input
hidden
hidden
hidden
U U U
W W W
input
input
input
hidden
hidden
hidden
U U U
W W W W
hidden
hidden
hidden
W’ W’ W’
hidden
hidden
hiddenW’ W’ W’
hidden
Hidden'
hidden
W’ W’ W’ W’
U’ U’ U’ U’ U’ U’ U’ U’ U’
1. 메모리 네트워크
해결책2: 히든 유닛 벡터를 저장
1. 메모리 네트워크
2017년은 앞으로의 산업계를 완전히 바꿔놓을 새로운 기술이 본격 자리 잡는 한 해가될 것이다. 앞으로 업계 변화를 주도할 기술은 무엇일까.
…두 번째는 머신러닝(기계학습)을 통한 창조성 강한 디자인 등장이다. 머신러닝은 학습을 통해 사물을 구별하고 이를 바탕으로새로운 것을 창조하는 단계에 이르렀다. 최근 `디자인 그래프`라 불리는 프로젝트로구현됐다. …
Q. 머신러닝으로 새로운 디자인을 창조하고자 하는프로젝트 이름은 무엇인가?
QA 모델A. 디자인 그래프
input
input
input
hid
den
hid
den
hid
den
U U U
W W WW
input
input
input
hid
den
hid
den
hid
den
U U U
W W W …Question representation
질의 정보를 담고 있는 벡터
X
답변 생성
RAM저장
메모리 네트워크
1. 메모리 네트워크
– 질의 응답 모듈
• 스토리 (예> 문장) 선택 모듈
– 질의 q에 대해 가장 적절한 답변을 포함하고 있는 스토리 (문장) s*를 탐색
» 적절성 평가를 통해 가장 높은 점수를 받은 스토리가 선택됨
– 스토리 선택 모듈의 출력은 질의 q와 선택된 스토리 s*의 결합
» Ex> 머신러닝으로 새로운 디자인을 창조하고자 하는 프로젝트 이름은 무엇인가? 최근 `디자인 그래프`라 불리는 프로젝트로 구현됐다.
• 답변 선택 모듈
– 가능한 답변의 집합 A={ar}1…k. 중 가장 적합한 답변 a*를 선택
– 적절성 평가 함수 (scoring function)
• G(x,y) ∈ [0,1] (H 함수도 동일)
• G(x,y) = 𝜙𝑥U GTUG𝜙𝑦(y)
• H(x,y) = 𝜙𝑥U HTUH𝜙𝑦(y)
• U는 임베딩 행렬
* arg max ( , )i
is
s G q s
*arg max ( , )
r
a ra
a H s a
메모리 네트워크의 학습: Triplet Loss
• 학습되어야하는 함수 : G, H
• G, H 함수: 긍정 예(s* 또는 a*)와 부정 예(sㄱ* 또는 a ㄱ*) 의 점수 차이를 𝛾이상 차이가 나게 만드는것이 목표
• 손실값(에러값): max(0, 𝛾 − 𝐺 𝑞, 𝑠∗+ 𝐺 𝑞, 𝑠𝑖 )
• 긍정 예와 질의의 매치 점수가 부정 예와 질의의 매치 점수보다 𝛾이상 높을 경우 손실값은 0이 됨
• 훈련 데이터 전체에 대한 손실값:
• 경사 하강법을 사용하여 파라미터 UG와 UH를 학습
1. 메모리 네트워크
* arg max ( , )i
is
s G q s*
arg max ( , )r
a ra
a H s a
G(x,y) = 𝜙𝑥UGTUG𝜙𝑦(y)
H(x,y) = 𝜙𝑥UHTUH𝜙𝑦(y)
𝑠𝑖
max(0, 𝛾 − 𝐺 𝑞, 𝑠∗+ 𝐺 𝑞, 𝑠𝑖 ) +
𝑎𝑖
max(0, 𝛾 − 𝐻 [𝑞; 𝑠∗], 𝑎
∗+ 𝐻 [𝑞; 𝑠
∗], 𝑎𝑖 )
1. 메모리 네트워크
신경망 메모리에 저장한 뒤 유사성 비교
신경망메모리 네트워크의 의의