メモ帳

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

cosine similarityの重み付けを使った、パーソナライズできるrecommender systemのベースライン

アイテム情報とユーザー情報を組み合わせた、パーソナライズされた推薦を行う基本的なシステムを紹介します。重み付けしたcosine similarity (コサイン類似度)によるシンプルな手法です。いわゆるcontent-basedなrecommendになっています。 機械学習を使った推薦システムでは、metric learningやautoencoderなどで高尚な特徴量に変換し、類似度の大きさを指標としたものが派手な話題性の高い手法だと思います。しかし、これらの手法は直感的でないので、うまく学習できないと全く使えないものになると思います。そこで、保守的な、ベースラインとして使う想定の手法を紹介したいと思います。

続きを読む

pythonの関数の処理時間計測デコレータ

pythonで実行時間を測定するためにはtime ライブラリ、jupyter上では%time などの使用が有名だと思います。コードの中に余計な処理を書き込みたくない人向けに、decoratorを使って関数の定義部分で宣言するだけで、実行後に処理時間を出力するようにかえる方法を紹介します。 また、少し分かりにくいdecoratorを解説します。

続きを読む

(Part 1) tensorflow2でhuggingfaceのtransformersを使ってBERTを文書分類モデルに転移学習する

現在、NLPの分野でも転移学習やfine-tuningで高い精度がでる時代になっています。 おそらく最も名高いであろうBERTをはじめとして、競ってモデルが開発されています。

BERTは公式のtensorflow実装は公開されてありますが、画像分野の転移学習モデルに比べると不便さが際立ちます。 BERTに限らず、公式のtensorflow実装は難解で、tf.kerasの学習済みモデルに関してもほとんど画像のモデルしかないです。

ただし、pytorch用のライブラリにpytorch-transformersという有用なものがありまして、 BERT, GPT-2, RoBERTa, DistilBert, XLNetなどの多言語学習済みモデルが利用可能で、カスタマイズもしやすいということで有名でした。

続きを読む

PythonからJulialangの関数を使える、Python + Julia + TensorFlow + Jupyter 環境をDockerのマルチステージビルドで構築する

前処理の高速化のためにPythonからJulialangの関数を使える、Python + Julia + TensorFlow + Jupyter 環境をDockerのマルチステージビルドで構築してみました。

続きを読む

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

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

続きを読む