メモ帳

python, juliaで機械学習をやっていく

kerasで学習済みword2vecをembedding layerに組み込む方法

kerasで学習済みword2vecをモデルに組み込む方法を紹介します。word2vecなどで学習した分散表現(token id毎のベクトル値)をkerasのembedding layerの重みに設定し、新たに学習させないように指定するという流れです。こうすることで、word2vecによる特徴量抽出を行うモデルがkerasで構成できます。自然言語処理では頻出の処理だと思います。前処理の段階で分散表現を獲得する(layerに組み込まない)手もあるかとは思いますが、prediction用に別途前処理用のコードを書く必要がでてくるなどの手間が発生するので、できるだけ今回紹介するようにモデルに加えるほうが無難だと思います。

続きを読む

ハイパーパラメータ自動最適化ツール「Optuna」を更に便利に使えるラッパー関数をつくった

Preferred Network(PFN)が作ったハイパーパラメータ自動最適化ツール「Optuna」を超絶簡単に使うためのラーパー関数をつくりました。モデル名、モデルオブジェクト、引数名と型、範囲の5つをペタペタ書くだけでよしなに最適化してくれるようになりました。一度に複数のモデルに対してチューニングを行えます。

続きを読む

Metric Learning: L2 softmax Lossとsoftmax Lossをkerasで実装し、mnistを使って比較してみた

metric learningで有用なL2 Softmax Lossについて調べた。 mnist datasetをNeural Networkで特徴空間に写し、Siamese network (距離関数で手書き文字の類似度を判定させるモデル) を構築した。 L2 Softmax Lossを用いたNeural Networkと、Softmax Lossを用いたものの性能を比較した。なお、通常の分類タスクでよく用いられるSoftmax Lossもmetric learningで使われるようである。

続きを読む

F関数を使ってDjangoで効率よくquerysetのカウントアップを行う

検索ヒット回数や、QAのフィードバックのためにDB内の値をカウントアップしたいとき、単純にDjangoのquerysetを使うと、1. 値の取得 2. 値の更新の合計2回DBにアクセスしなければいけません。しかし、F関数を使えば1回のアクセスで更新できます。

続きを読む

(Part. 2) tensorflow 2.0 betaでtransformerをつかって言語生成chatbotをつくりたい

以下の記事のPart. 2です。 Part. 1ではtransformerの説明とモデルの実装をしました。 この記事ではlossやmetricsを定義し実際に学習を行います。 また、日本語データを用いるために分かち書きも実装しています。

tksmml.hatenablog.com

続きを読む

macの仮想環境化でmatplotlibを簡単に日本語対応させる

以下のように、matplotlibが日本語に対応していないのは有名な問題です。(大量の豆腐が表示されてしまっています。) その、対応として、グローバルにフォントを指定する必要があります。しかし、仮想環境を使っている場合は、それぞれにフォントの設定をしなければいけません。あまりにも手間なので、コード内でフォントを指定する方法を紹介したいと思います。 f:id:atelier-0213:20190626224926p:plain

続きを読む

(Part. 1) tensorflow 2.0 betaでtransformerをつかって言語生成chatbotをつくりたい

tensorflow2.0のベータ版が公開されたので、慣れるためにtransformerを学習させて、言語生成を試して見たいと思います。 collaboratoryを使ってGPUで学習させます。

コードはこちらチュートリアルを参考にしました。

続きを読む