メモ帳

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

自然言語処理のData Augmentation手法 (Easy Data Augmentation)

自然言語処理 Advent Calendar 2019の10日目です。昨日は、ktr_wtbさん形態素解析ツールインストール(MeCab,Juman++,Janome,GiNZA)と、plantarumさん自然言語処理を始める準備でした。

本記事では、以下の論文の概要をまとめます。(技術系の記事が多いのでちょっと気がひけますが)

EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks [Jason W. Wei, Kai Zou; 2019]

以下、すべての画像はこの論文からの引用です。

TL;DR

  • 英語の5つの文書分類タスクで以下の処理により、Data Augmentationを行った。
    • (先行研究あり) 同義語で置換
    • (New!) randomな同義語の挿入
    • (New!) randomなワードの移動
    • (New!) randomなワードの削除
  • 半分程度のデータ量だけ学習させて同等な精度をだせた
  • convolutionとRNNの両方で効果が出た
  • 著者の実装はこちら
続きを読む

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のマルチステージビルドで構築してみました。

続きを読む