Ahogrammer

Deep Dive Into NLP, ML and Cloud

Keras

Kerasで固有表現認識のf1スコアを計算する

一般に固有表現認識では、学習済みモデルの性能を評価するためにf1が使用されます。その際、評価はトークンごとではなくエンティティごとに行われるのが特徴となっています。 f1スコアを評価する関数は、多くの機械学習フレームワークに実装されています。し…

固有表現認識器に言語モデルを組み込んで、性能を向上させる

最近の自然言語処理では言語モデルを使って転移学習をしたり、性能向上に役立てたりするようになってきました。言語モデルの1つであるELMoでは、言語モデルから得られる分散表現を他のタスクの入力に使うことで、質問応答や固有表現認識、評価分析といった…

文字ベース言語モデルの作り方

最近の言語処理では言語モデルを使って転移学習をしたり、性能向上に役立てたりするようになってきました。言語モデルの1つであるELMoでは、言語モデルから得られる分散表現を他のタスクの入力に使うことで、質問応答や固有表現認識、評価分析といった様々…

KerasにおけるSpatialDropoutとは何者なのか?

SpatialDropoutは、画像認識の分野でTompsonらによって提案されたドロップアウト方法です。通常のドロップアウトが各要素を独立して落とすのに対して、SpatialDropoutはある領域全体をまるごと落とします。それにより、画像認識の分野で性能向上が報告されて…

「Kerasのto_categoricalの挙動ってちょっと変わってるよね」という話

今日はマニアックな話。 Kerasを使っている人なら、to_categorical関数を使ったことがある人は多いのではないかと思う。to_cateogorical関数をいつ使うかというと、正解クラスをone-hotエンコーディングして出力に与えたいときに使うことが多い。Keras 2.2.0…

ディープラーニングで作る固有表現認識器

固有表現認識は自然言語処理の基礎技術であり、様々なタスクの要素技術として使われます。たとえば、情報抽出や対話システム、質問応答といった応用システムの中で固有表現認識は使われることがあります。また、関係認識やEntity Linkingといった基礎技術で…

gensimを使ってKerasのEmbedding層を取得する

2017/06/21にリリースされた gensim 2.2.0 から Keras との統合機能が導入されました。 具体的には、Word2vec の Keras 用ラッパが導入されました。 これにより、gensim で分散表現を学習した後に、その重みを初期値として設定した Keras の Embedding層を取…

Keras の RNN/LSTM/GRU で内部状態を取得する

自然言語処理で RNN を使っていると、RNN の内部状態を取得したくなることがあります。 TensorFlow では tf.nn.dynamic_rnn 等の関数を使うと、出力と状態を返してくれます。 しかし、Keras でのやり方については意外と日本語の情報がありませんでした。 本…

Keras の Conv1D と Convolution1D、MaxPool1D と MaxPooling1D の違い

Kerasで書かれたコードを読んでいるとふと気がつくことがある。 それは、Conv1D と Convolution1D、MaxPool1D と MaxPooling1D という同じような名前のクラスが出てくるのだ。 一体これらの違いは何なのだろうか?

文字レベルの畳込みニューラルネットワークによる文書分類

はじめに 自然言語処理で文書分類は最も基本的なタスクの一つです。 文書分類は、SNSに対する評判分析、ニュースのジャンル分類、メールのスパムフィルタや文書の著者推定といった問題の解決に使われています。 このように基本的なタスクである文書分類は広…

デバッガを使ってKerasのモデルをデバッグする

3行まとめ Keras で作成したモデルをデバッグしたい。 Keras には標準でデバッガが用意されていない。 Keras の Session オブジェクトを tfdbg でラップしてデバッグする。 オープンソースのニューラルネットワークライブラリである Keras は計算グラフに基…

Kerasでカスタムレイヤーを作成する方法

Kerasでは様々なレイヤーが事前定義されており、それらをレゴブロックのように組み合わせてモデルを作成していきます。 たとえば、EmbeddingやConvolution, LSTMといったレイヤーが事前定義されています。 通常は、これらの事前定義された便利なレイヤーを使…

KerasのLambda層でreshapeしたとき、保存に失敗する(場合がある)話

TL;DR keras.backendのreshapeを使ってLambda層でreshapeしたい reshapeのshapeにテンソルを指定するとモデルの保存(save)に失敗する saveではなくsave_weightsを使うと保存できる 背景 まず問題が起きる状況について説明しておきたい。 簡単にまとめると以…

Keras の fit と fit_generator の速度を比較する

Kerasでモデルを学習させるときによく使われるのが、fitメソッドとfit_generatorメソッドだ。 各メソッドについて簡単に説明すると、fitは訓練用データを一括で与えると内部でbatch_size分に分割して学習してくれる。 それに対し、fit_generatorではbatch_si…