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

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

2017-12-01から1ヶ月間の記事一覧

gensimでLDA

LDA(Latent Dirichlet Allocation) 1つの文書が複数のトピックから成ることを仮定した言語モデルの一種。 各文書には潜在トピックがあると仮定し、統計的に共起しやすい単語の集合が生成される要因を、この潜在トピックという観測できない確率変数で定式化す…

TheanoでNER(CRF)

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

CRFについて

CRF

はじめに CRFはConditional Random Fieldsの略。識別モデル(からを直接推定するモデル)の一種。HMMを識別モデル(最大エントロピーモデル)に適用したものと考えると分かりやすい。 それぞれは下記でまとめた。 隠れマルコフモデル(HMM)について - 機械…

隠れマルコフモデル(HMM)について

HMM

隠れマルコフモデル(HMM) 直前の結果のみから次の結果が確率的に求まるという「マルコフ性」を仮定して、事象をモデル化。 隠れマルコフモデル(以降HMM)では、過去の状態の遷移は不明(隠れている)な状態であり、その状態の出力結果より事象をモデル化…

最大エントロピーモデル(対数線形モデル)について

最大エントロピー原理 概要は 確率変数 X について、 X が条件 I を満たす事だけが分かっており、それ以外に X に関して何1つ知らなかったとする。 X について条件 I 以外には何も知らないのだから、条件 I の下で X の「不確かさ」が最大(エントロピーが最…

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>…

KerasでEmbedding

EmbeddingKeras Documentationの説明 正の整数(インデックス)を固定次元の密ベクトルに変換します. Embeddingレイヤー - Keras Documentation使い方 model.add(Embedding(1000, 64, input_length=10)) 引数: input_dim: 正の整数.語彙数.入力データの…

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…