Recurrent Neural Network - 2

이미지
첫번째 RNN 공부는 TensorFlow 공식 홈페이지 RNN 튜토리얼에서 소개된 좋은 게시글을 공부했었습니다. 이번에는 TensorFlow 공식 홈페이지 튜토리얼 을 공부할 것입니다. Recurrent Neural Networks Introduction RNN과 LSTM을 소개하기 위해 colah's blog 게시글 을 보기 바랍니다. 이 글을 번역하여 공부한 것이 저의 첫번째 게시글이었습니다. Language Modeling 이 튜토리얼에서 언어 모델링 문제에서 RNN을 어떻게 학습시키는 지 알아 볼 것입니다. 우리의 목표는 문장에 확률을 할당하는 확률 모델을 fit시키는 것입니다. 주어진 이전 단어들의 히스토리를 이용하여 다음 단어를 예측할 것입니다. 이런 모델의 질을 측정하기 좋은 Penn Tree Bank (PTB) 데이터셋을 이용할 것입니다. 언어 모델링은 음성 인식, 기계 번역, 이미지 캡셔닝과 같은 많은 재미있는 문제에 핵심이기도 합니다. 이 곳 을 보시면 RNN이 여러 재밌는 분야에 쓰이고 있다는 것을 알 수 있습니다. Tutorial Files 아래 파일들은 TensorFlow Github 의 tensorflow/models/rnn/ptb 에 있습니다. File Purpose ptb_word_lm.py PTB 데이터 셋을 train하는 코드 reader.py 데이터셋를 읽는 코드 Download and Prepare the Data 이 튜토리얼에 필요한 데이터셋은  Tomas Mikolov's webpage :   http://www.fit.vutbr.cz/~imikolov/rnnlm/simple-examples.tgz   에 있습니다.  이 데이터셋은 전처리되어 있고 10000의 다른 단어로 이루어져 있습니다. reader.py를 이용해 위 단어들을 unique integer identifier로 만듭니다. The Model ...

Recurrent Neural Network - 1

이미지
이 글은  Understanding LSTM Networks  라는 블로그 포스트를 번역하고 공부한 내용입니다. Recurrent Neural Network 사람은 처음부터 매 순간 생각하지 않습니다. 이 에세이를 읽을 때, 이전의 단어에 대한 이해를 바탕으로 각각의 단어들을 이해합니다. 사람들은 생각을 처음부터 시작하지 않고 이전의 것들을 모두 버리고 생각하지 않습니다. 즉, 사람들의 생각은 지속성을 지닙니다. 기존의 뉴럴 네트워크는 할 수 없었고, 그것이 가장 큰 단점인 것 같았습니다. 예를 들어, 영화에서 발생하는 모든 상황들을 순간마다 분류한다고 상상해봅시다. 기존의 뉴럴 네트워크는 어떻게 자신의 추론을 이용해 이전의 사건들로 다음 사건들을 알릴 지 불명확합니다. 순환 신경망을 이 문제를 풀어냅니다. 순환 신경망은 자신에게로 돌아오는 반복 네트워크를 갖고 있으며 그것이 정보를 계속 유지시켜줍니다. 위 그림에서 뉴럴 네트워크의 덩어리 A, input으로 보이는 Xt 와 output 값인 ht를 볼 수 있습니다. 반복은 정보가 다음 네트워크를 넘어가도록 합니다. 반복들은 RNN을 미스테리하게 만듭니다. 그러나 , 좀 더 생각해본다면, 평범한 신경망과 크게 다를 게 없다고 판명납니다. RNN은 후손 노드에게 메시지를 넘기는 네트워크들의 여러 복사본들이라고 생각되어질 수 있습니다. 반복을 펼쳐보면 어떤 일이 생길 지 생각해봅시다. 연결되어 있는 노드들은 RNN이 sequence(순서) 와 lists(배열)에 직접적으로 관련되어 있다는 것을 드러냅니다. RNN은 저런 데이터를 위한 자연적인 구조입니다. 즉, RNN 구조는 이전의 데이터를 바탕으로 학습해야하는 데이터를 위한 인간 뇌 신경망의 자연적인 메카니즘이라는 말입니다. 몇 년전부터 RNN은 음성인식, 언어 모델링, 번역, 이미지 캡셔닝 등 많은 문제에 적용되어 엄청난 성과를 냈습니다.  The Unreasonable Effectiveness of...

버추얼 머신 공유 폴더 권한 에러

상황 (2016/08/22) 공유 양방향으로 해놨으나 가끔 안되는 경우가 있어 공유 폴더를 만들고자 했다. vm에 폴더를 공유하기 위해 설정에 들어가 만들었으나 권한 에러 발생. 자동 마운트와 항상 사용 버튼을 누른 상태. 에러 접근 권한 오류 해결 sudo usermod -G vboxsf -a 추가할사용자명 sudo shutdown -r now

TensorBoard : Convolutional Neural Network

이미지
TensorBoard : Convolutional Neural Network 이번에는 cnn을 텐서보드에 나타내는 것을 공부해보겠다. cnn에서도 MNIST 예제를 사용하겠다. 하지만 cnn은 컴퓨터에서 너무 느리게 학습되므로 나중에 AWS로 다시 해볼 예정이다. ```python import tensorflow as tf import numpy as np import input_data batch_size = 128 test_size = 256 def init_weights(shape,name):     return tf.Variable(tf.random_normal(shape, stddev=0.01),name=name) def model(X, w, w2, w3, w4, w_o, p_keep_conv, p_keep_hidden):     with tf.name_scope("layer1") as scope:         l1a = tf.nn.relu(tf.nn.conv2d(X, w,                       # l1a shape=(?, 28, 28, 32)                             strides=[1, 1, 1, 1], padding='SAME'))         l1 = tf.nn.max_pool(l1a, ksize=[1, 2, 2, 1],              # l1 shape=(?, 14, 14, 32)       ...

TensorBoard : Neural Network

이미지
TensorBoard : Neural Network 텐서플로우에서 코드를 좀 더 직관적으로 보기 위해 tensorboard 를 공부했다. 이제 NN,CNN,RNN 예제를 텐서보드에서 구동시키기 위해 코드를 재작성해봤다. NN과 CNN은 MNIST 예제를 이용했고 RNN은 아직 미정이다. ```python import tensorflow as tf import numpy as np import input_data def init_weights(shape, name):     return tf.Variable(tf.random_normal(shape, stddev=0.01), name=name) # This network is the same as the previous one except with an extra hidden layer + dropout def model(X, w_h, w_h2, w_o, p_keep_input, p_keep_hidden):     # Add layer name scopes for better graph visualization     with tf.name_scope("layer1") as scope:         X = tf.nn.dropout(X, p_keep_input)         h = tf.nn.relu(tf.matmul(X, w_h))     with tf.name_scope("layer2") as scope:         h = tf.nn.dropout(h, p_keep_hidden)         h2 = tf.nn.relu(tf.matmul(h, w_h2))     with tf.name_scope("layer3") as scope: ...

ML lab 12 DeepLearning

이미지
lec12 : NN의 꽃 RNN 이야기 RNN은 sequence data에서 자주 쓰이는데 이전의 데이터가 다음의 데이터에 영향을 줄 때 자주 사용된다. 위 그림을 자세히 풀어보면 아래와 같다. RNN에는 state라는 개념이 있다. state는 위에서 언급했듯이 이전의 state에 영향을 받는다. 이제 구체적인 연산 방법에 대해 알아보자. 가장 기본이 되는 Vanilla RNN에 대해 알아보자. 새로운 state는 이전의 state와 x와 weights에 의해 결정된다. 그리고 y는 weight와 state로 결정된다. 예를 들어, hello를 RNN했을 때 위와 같은 모습을 가진다. language model은 네이버 검색과 같다. h를 입력했을 때 가장 많이 나오는 e를 보여주고 그 다음 많이 나오는 l을 보여주고 결국 h 하나 입력했는데 사람들이 가장 많이 입력하는 hello가 검색 도우미 창에 나오는 것이다. RNN의 첫번째 단계는 문자열을 벡터화하는 것이다. 위 예시는 one hot encoding한 것이다. [h,e,l,o] 벡터를 가지고 h = [1,0,0,0]으로 만드는 방식이다. 위 hidden layer에서는 input layer와 이전의 hidden layer를 이용해 다음 layer값 weight를 결정한다. 마지막 output 레이어에서는 가장 큰 수를 가진 문자를 선택하게 된다. 하지만 두번째에서는 l을 원했지만 o가 나왔으므로 에러가 발생한다. 간단히 RNN의 과정을 알아보았다. 이제 RNN의 활용 예들은 아래와 같다. 음성 인식, 대화 모델, 이미지 캡쳐 등 여러가지 방면에서 사용된다. RNN에서 여러가지 기술들이 존재한다. 기술마다 쓰이는 곳이 다르다.

ssh key error (하둡 & 버추얼 박스)

상황 (2016/8/20) 버추얼박스 머신에서 하둡 실행 중 네임 노드를 다른 머신으로 변경하다가 ssh key에 대한 에러 발생 에러 발생  sign_and_send_pubkey: signing failed: agent refused operation 해결 sudo apt-get autoremove gnome-keyring ssh-add -D sudo reboot