機械学習・自然言語処理の勉強メモ

学んだことのメモやまとめ

Theano

TheanoでNER(CRF)

前回まででメインとなるLSTM層を説明した。 kento1109.hatenablog.com今回はCRFによる出力部を見ていく。元となるコードを再掲 github.com CRF 簡単に言うと、「識別モデルを用いて系列ラベリングの問題を学習するもの。」詳しくは前回まとめた。 kento1109.…

Theanoのdimshuffleについて

コードを読んでいると時々出てくる。 もう少し理解を深めるために色々試したのでメモ。Documantationは下記 Basic Tensor Functionality — Theano 1.0.0 documentation dimshuffle関数は簡単に言うと次元の置換を行う関数。一番簡単な例は下記(行列の転置と…

TheanoでEmbedding

kerasでは関数が用意されているが、Theanoの場合は自分で定義する必要がある。kerasについてはこっちでまとめた。 kento1109.hatenablog.comコードを読んでいても理解は難しくないが、実装する時にもう少し挙動を理解したいと思ったのでメモする。 Embedding…

Theanoのfunctionについて

inputsの書き方について ソースを読んでいた時、これを知らなくて嵌ったのでメモ。functionに渡すinputsは下記のように指定することが多い。 from theano import * import theano.tensor as T a = T.dscalar('a') b = T.dscalar('b') z = (a + b)**2 f = fun…

TheanoでNER(モデル構築)

前回は前処理部分を簡単に理解した。 kento1109.hatenablog.com 前回も載せたがコードはここ。 github.com今回はメインのモデル構築について整理していく。 モデル構築(model.py) train.pyの f_train, f_eval = model.build(**parameters) でモデルを構築…

TheanoでNER(前処理)

NER(Named Entity Recognition) 系列ラベリングの一種。 日本語では、固有表現抽出と言われるタスク。具体例としてはこんなの 太郎は5月18日に花子に会いに行った。 これに含まれる固有表現を抽出(タグ付け)すると以下となる。 <PERSON>太郎</PERSON>は<DATE>5月18日</DATE>の<TIME>朝9時</TIME>に<PERSON>花</person>…

TheanoでStacked Autoencoder

前回の続編で、今回はStacked Autoencoder(積層自己符号化器) kento1109.hatenablog.comこのdocumantationを整理する。 Stacked Denoising Autoencoders (SdA) — DeepLearning 0.1 documentation今回もStacked Autoencoderに関する基本知識は、「MLP 深層…

Theanoのreshapeについて

reshapeを使ったときに嵌ったのでメモ。たとえば、numpyでreshapeを使う場合、 import numpy as np a = np.array([1, 2]) print a.reshape(2, 1) [[1] [2]] こうすることで、ベクトルとして扱うことが出来る。同じことをTheanoでやりたい場合、 たとえば、こ…

TheanoのDebugメモ

Theanoで実装するとき、何ともデバッグが理解しにくいと思った。numpyでの計算とは違い、計算時にエラーがあったときに何が悪いか突き止めるのが難しい。使いこなせたらそうじゃないんだろが、初心者には難しく感じた。なので、備忘録としてTheanoでのDebug…

TheanoでDenoising Autoencoder

今回は下記のdocumantationを整理して、Autoencoder(自己符号化器)を理解する。Denoising Autoencoders (dA) — DeepLearning 0.1 documentation下記のまとめが分かりやすかった。sinhrks.hatenablog.com aidiary.hatenablog.com文献としては下記を参考とし…

TheanoでLSTM③

前回の続き kento1109.hatenablog.com前回は、lstm_layerの内容を見てきた。 このように呼んでいたので、 proj = lstm_layer(tparams, emb, options, prefix=options['encoder'], mask=mask) projには、lstm_layerの戻り値のhがセットされる。 ※hは文字の長…

TheanoでLSTM②

前回の続き kento1109.hatenablog.com今回はLSTM層の構築から見ていく。 lstm_layer nsteps = state_below.shape[0] if state_below.ndim == 3: n_samples = state_below.shape[1] else: n_samples = 1 state_belowは、emb、 つまり、nstepsは、文書の長さ ※…

TheanoでLSTM①

下記のdocumentationについて整理する。LSTM Networks for Sentiment Analysis — DeepLearning 0.1 documentation はじめに コードを読んでいく前に全体の概要を掴む。コードについては下記の2ファイル lstm.py : モデルの定義&訓練 imdb.py : IMDB データ…

TheanoでRNN②

RNNの続きkento1109.hatenablog.com前回で、elman.pyの__init__部をまとめた。 今回は、elman-forward.pyのRNNインスタンス生成後のコードを呼んでいく。前回の内容で rnn = model(nh = s['nhidden'], nc = nclasses, ne = vocsize, de = s['emb_dimension']…

TheanoでRNN①

下記のdocumentationについて整理する。Recurrent Neural Networks with Word Embeddings — DeepLearning 0.1 documentation タスクについて assigning a label to each word given a sentence. It’s a classification task. とある通り、文章の各単語のタグ…

TheanoのSCANについて

SCANとは theanoにおける繰り返し処理に対応する関数。基本的な理解のために下記ページを参考にさせて頂いた。 sinhrks.hatenablog.comfnの引数は、 fn に渡す引数は (最大で) 以下の 3 つになる。それぞれ、対応する引数がない場合は省略される (fnに渡され…

TheanoでLogistic Regression(ロジスティック回帰)

下記のdocumentationの整理を行う。Classifying MNIST digits using Logistic Regression — DeepLearning 0.1 documentation LogisticRegressionインスタンスの生成 例題の入力は28×28のMNIST画像。 出力は1~10までの数値。(10クラス分類) # construct th…

TheanoでMLP(多層パーセプトロン)

下記のdocumentationについて整理する。Multilayer Perceptron — DeepLearning 0.1 documentationモデルイメージはこんなん。 MLPインスタンスの生成 まずは、MLPインスタンスを下記のように生成する。 # construct the MLP class classifier = MLP( rng=rng…

TheanoでSentiment analysis (CNN)②

前回でマックスプーリングまでの層の定義をまとめた。 kento1109.hatenablog.com 今回は、MLP層についてまとめる。 MLPDropput ここに書いたこととほとんど同じ。 kento1109.hatenablog.com 呼び出し側 classifier = MLPDropout(rng, input=layer1_input, la…

TheanoのLeNetConvPoolLayerについて

Theano(LeNetConvPoolLayer) LeNetConvPoolLayerクラスのチュートリアルはここ。 Convolutional Neural Networks (LeNet) — DeepLearning 0.1 documentation 論文の実装をするときは、このクラスを元に実装するのが正攻法だと思う。 なんで、LeNetConvPoolLa…

TheanoでSentiment analysis (CNN)①

Sentiment analysis TheanoでCNNによるSentiment analysisのコードを読む。 コードは github.com process_data.py ここは前処理。Theanoでの処理もない。 この前処理でどういうデータセットが出来るかを押さえる。cPickleで保存する変数は、revs, W, W2, wor…