今日も窓辺でプログラム

外資系企業勤めのエンジニアが勉強した内容をまとめておくブログ

Tensor2Tensorを使って独自データでseq2seqしてみる

はじめに

Tensor2Tensorという、広く使われているモデルやデータセットが実装されているディープラーニングのライブラリがあります。
GitHubのREADMEによると、Tensor2TensorはGoogle Brainチームなどによって開発されているようで、中身はTensorFlowで実装されています。

用意されているモデルとデータセットを使うだけなら、コーディングなしでディープラーニングを試すことができます。
モデルやデータセットの追加も容易に行えるようになっていて感動したのですが日本語の記事はあまり見当たらなかったので、せっかくなので今回試した「自分で用意したデータでseq2seqを学習させる」ための使い方を紹介しようと思います。

環境はUbuntu 16.04のでGPUを使用した学習を行いました。

続きを読む

SentencePieceを使用してRNN言語モデルを学習させてみる

はじめに

前回の記事ではpytorchのサンプルコードを参考にし、Wikipediaの記事の一部に対してRNN言語モデルを学習させてみました。
RNN言語モデルのpytorch実装をWikipediaの記事で学習させてみる - 今日も窓辺でプログラム

その際にWikipediaの記事を単語に分割するための技術として、MeCab + neologd辞書を使用していました。
Wikipediaの日本語記事を全行を、分かち書きしてforループで回す - 今日も窓辺でプログラム

最近出てきた文章を単語分割する手法に、wordpiecesと呼ばれている技術があります。その実装であるSentencePieceがGoogleから公開されています。
技術的な解説などは、SentencePieceの開発者の方(MeCabの開発者でもあります)が公開しているQiitaの記事で詳しく説明されているので、ぜひ読んでみてください。
Sentencepiece : ニューラル言語処理向けトークナイザ - Qiita

SentencePieceを使用すると、少し長い文字列でも出現頻度が高ければ1つの単語IDが割り当てられるようです。逆に、人間から見ると一つの単語でも、その単語の出現頻度が低い場合は単語をさらに分割した小さい単位に対して単語IDを割り当てていきます。

この記事では、前回学習したRNN言語モデルの単語分割部分をMeCabからSentencePieceに置き換えるとどのような結果になるか試してみたいと思います。

続きを読む

RNN言語モデルのpytorch実装をWikipediaの記事で学習させてみる

はじめに

pytorchのGitHubに上がっているサンプルを見ていたら、RNNを使って言語モデルを実装しているものがありました。
examples/word_language_model at master · pytorch/examples · GitHub

本当はいろんなネットワークを1から実装するのがよいのでしょうが、そのような経験もあまりないのでまずはサンプルを写経して走らせてみようと思いました。
最近Wikipediaのデータを単語分割したコーパスを用意したので、そのコーパスに対して上記実装を走らせてみます。

続きを読む

ビットコインの約定履歴を取得してローソク足チャートを描いてみる

はじめに

ここ最近、ビットコインを筆頭とした仮想通貨が世間を騒がせているようです。私は完全に乗り遅れてしまいました。仮想通貨の取引所はAPI等も多く公開しているようなので、遅れながらも何もやらないよりはと思い、公開APIを読んでビットコイン取引のローソク足チャートを作成してみました。

将来的には何らかのアルゴリズムで取引を自動で行うプログラムを書きたいですが、まずは簡単なところから行ってみます。

続きを読む