終末 A.I.

データいじりや機械学習するエンジニアのブログ

自然言語処理

Keras Loss Behavior with Language Model

KerasのModelクラスを使用した際のロスの計算は、Paddingで追加した余計な値を勾配の計算から除外する処理は自動でやってくれるのですが、 historyに記録されるlossの平均値を求める際に、maskを部分的にしか考慮しておらず、padding数が多くなればなるほど…

VariationalでEnd2EndなDialogue Response Generationの世界

この記事は、自然言語処理 #2 Advent Calendar 2019の24日目の記事です。 Open-Domain Dialogueや非タスク指向対話、雑談対話と呼ばれる領域において、発話データのみを使用したEnd2Endな対話応答生成を試みる歴史はそこまで古くなく、[Ritter et al+ 11]や[…

End2Endな対話システムの評価指標

この記事は、Qiita 自然言語処理アドベントカレンダーの2日目です。 1日目は jojonki さんによるゼロから作った形態素解析器Taiyakiで学ぶ形態素解析でした。 この記事では、End2Endな対話システムの評価指標、特に応答文生成の自動評価指標に注目して、どの…

ニューラルネットワークを使用した対話システム (2)〜機械読解質問応答システム〜

本記事は、「Neural Approaches to Conversational AI*1」を元に、ニューラルネットワークを使用した対話システムについて解説する記事の二回目です。 前回の記事では、対話システムの概要とKnowledge Base質問応答システムについて説明しました。 ksksksks2…

ニューラルネットワークを使用した対話システム (1)〜Knowledge Base質問応答システム〜

対話システムは、QAチャットや音声アシスタントなど、様々なところで使用されており、 また、GoogleのDialogflowを始め多くの独自対話システムを構築できるプラットフォームが数年前から続々と登場してきています。 しかし、これらの公開されているシステム…

CNNを利用した自然言語処理技術まとめ(2017年1月)

年末に Language Modeling with Gated Convolutional Networks が一部界隈でバズったこともあり、CNNを用いた自然言語処理が注目を集め始めています。今年の後半あたりには、派生手法や関連手法が多く登場していくのではないかと思われます。 CNNはRNNに比べ…

テキスト生成モデル -SeqGAN-

この記事は、DeepLearning Advent Calendar 2016の20日目です。 今回は、時系列データに GAN の手法を適用した SeqGAN をご紹介したいと思います。SeqGAN は分かりやすく時系列データに GAN を適用しているためアルゴリズムが理解しやすく、公式の TensorFlo…

RNN より高速な Feedforward Sequential Memory Networks (FSMN) を TensorFlow で実装してみた

LSTM や GRU など RNN の一般的なアーキテクチャの弱点としては、DNN や CNN に比べた場合に処理の遅さがあげられます。それは、アーキテクチャからは自明で、LSTM や GRU のような系列の記憶としての隠れ変数を使用する層の場合、あるステップの計算を行う…

TensorFlow の ptb サンプルを動かす

TensorFlow で ptb を学習させるサンプルは Recurrent Neural Networks チュートリアルに記載されている通り、 github からソースを落としてきて、tensorflow/models/rnn/ptb に移動し、ptb_word_lm.py を動かすだけで簡単に動作させることができます。 ただ…

GoogleのAIはどうやって「詩」を生成するのか

一ヶ月ほど前ですが、Googleの人工知能が「詩」を創りだしたという話が話題になりました。 wired.jp この話の元ネタは、[1511.06349] Generating Sentences from a Continuous Spaceで発表されている論文になります。この論文では、ベイズとDeep Learningを…

word2vec の結果を利用して RNN で文章を生成してみる(2)

word2vec の出力結果を元に文章を作ってみるコーナーの第二弾です。 今回はエンコーダー・デコーダーモデルを使用して word2vec の出力から文章を生成できないかを試してみました。 使用したモデルは以前の記事で紹介した Skip-Thought Vectors です。 ksksk…

Deep Learning で使われてる attention ってやつを調べてみた

先週 Skip-Thought Vectors について調べてみたわけですが、その中でよく何を言っているのかよく分かっていなかった、 attention mechanism について調べてみました。 調べるにあたって、最近のDeep Learning (NLP) 界隈におけるAttention事情 が大変参考に…

Skip-Thought Vectors を解説してみる

本日は、インスピレーションと予算の枯渇のため、実験ができていなかったので、論文の解説をいたします。まあ、解説とか偉そうなことを言っていますが、主に自分用のメモみたいなものなのですが。 紹介する論文は、「Skip-Thought Vectors」です。この手法は…

word2vec の結果を利用して RNN で文章を生成してみる(1)

chainer のサンプルの中には RNN 利用して文章を学習し、コンテキストに沿った単語を選択できるようになる ptb のサンプルが付属しています。 今回はこいつをちょっと改造して、単語の識別IDではなく、word2vec で生成したベクトルを用いて ptb サンプルと同…

Wikipedia を word2vec する

前回、青空文庫で word2vec を試してみましたが、結果を見ての通り、作家によって類似する単語が違ったり、そもそも語彙が少ないため、あまり汎用性のある結果を得ることはできませんでした。 ksksksks2.hatenadiary.jp そこで今回は、日本語 Wikipedia のダ…

word2vec を青空文庫で試してみる

word2vec は単語のベクトル表現をえるための手法の一つで、ニューラルネットワークを利用して行われているものです。 登場した当時の他の単語ベクトル生成手法に比べ高速に、そして単語関係の表現能力が高い獲得できる点がポイントです。 CBOWとskip−gramの2…

Chainer の ptb サンプルで遊んでみる

AWS の GPU環境をなんとか整えたので、RNN で遊んでみようと思い、Chainer の ptb サンプルを試しに動かしてみました。 ptb サンプルでは、入力された単語系列(文章)を元に、次の単語を推論する構造で、RNNのよくあるモデリングになっています。 ちなみに…