終末 A.I.

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

Deep Learning

TensorFlow Array Indexing Correspond to numpy

TensorFlowで配列処理を効率的に行うのはなかなか難しいことがあります。 例えば、下記のようなIndexing処理はnumpyでは簡単に実現することができますが、TnesorFlowではそうはいきません。 a[:, [2, 3]] スライス以外の方法でインデックスを指定して値を取…

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な対話システムの評価指標、特に応答文生成の自動評価指標に注目して、どの…

CNNの精度向上手法のモデルサイズによる効果の違いを調べてみた

画像認識タスクはDeep Learningにより大幅に精度が向上してきた分野です。 1クラス500枚・100クラスの分類を行う必要がある、比較的難易度が高めのCIFAR-100ベンチマークでも、最新の手法であるGPipeやEfficientNetでは、テストセットにて90%を超えるAccurac…

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

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

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

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

2018年風TensorFlowでの学習処理の記述方法

TensorFlowが登場して早いことで3年近く経とうとしています。 Deep Learning自体がブームになってからだと、それ以上の月日が経っているわけで、人工知能ブームも以外と続いているなあというのが正直な感想です。 Theanoやtorch、chainerに遅れをとって立ち…

DNNで渦巻きデータを学習して、決定境界を可視化してみる

TJO さんの下記のブログに触発されまして、NNで渦巻きデータを分類するタスクをやってみました。 使用したデータは、下記のコードにより適当に生成した渦巻きデータです。Neural Network Playgroundの渦巻きデータのように、中心と周辺でデータの分布が近し…

畳み込みニューラルネットワークが見ている世界を可視化してみる(1)

VISUALIZING DEEP NEURAL NETWORK DECISIONS: PREDICTION DIFFERENCE ANALYSIS など、ニューラルネットワークの内部でいったいどんな処理が行われているのかを調べている論文も多く、アルゴリズムの理論的な解明を考えると、このような論文はまだまだたくさ…

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

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

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

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

TensorFlow で知っていると役に立つ(かもしれない)演算系関数たち

この記事は、TensorFlow Advent Calendar 2016 の13日目です。 TensorFlow で処理をスクラッチする際に知っておくと便利な関数をご紹介したいと思います。 以降の説明は、TensorFlow v0.11.0 の動作に基づいて説明しています。挙動や名称がバージョンによっ…

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

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

Prisma で使われているという Neural Style を試してみた

7月くらいに話題に上がっていました Prisma ですが、皆さん覚えていらっしゃるでしょうか。Prisma では、A Neural Algorithm of Artistic Style というアルゴリズムをベースに、面白画像を生成していると言われていますが、10月の頭にその高速化手法であるPe…

TensorFlow の cifar10 サンプルを動かす

一般的な DNN、RNN と続いて、今回は CNN を TensorFlow の cifar10 サンプルを元に動かしてみたいと思います。 AWSでのGPU環境の整備や、TensorFlow の基本的な使い方については、手前味噌ですが下記の記事をご覧ください。 また、CNNって何?どういう仕組…

TensorFlow の ptb サンプルを動かす

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

AWS の GPU インスタンスで TensorFlow を動かしてみた(2016.07)

前回は TensorFlow のチュートリアルを触ってみたわけですが、当然のごとく手元のノートPCではさほど速度を出すことができません。DNNをあつかう宿命としてGPU上で動作させることは避けては通れないものです。 というわけで、GPU で TensorFlow を動かすため…

TensorFlowでDNNをスクラッチするためのオレオレチュートリアル

はじめに Chainer もなんとなしに慣れてきたので(使いこなせているレベルではありませんが)、他のDNN Framework も触ってみようと思いたち、昨日からTensorFlowをいじってみています。 最終的なアウトプットは同じなので、クラス構造などが結構似通ってい…

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

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

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

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

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

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

Wikipedia を word2vec する

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

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

Deep Learning といえば、やはり画像認識での利用です。今さら感もないではないですが、chainer の imagenet サンプルは、日々進歩している画像認識処理を様々な形のネットワークで試してみることができ、Deep Learning の仕組みがどのようになっているか、c…

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

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