メモ帳

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

Tensorflow Profilerを使って前処理 (tf.data.Dataset API) のパフォーマンスを改善する

Tensorflow Profilerの紹介を行い、tf.data.Dataset APIとtf.kerasで構成された画像分類タスクのパイプラインのパフォーマンス改善を試してみます。 目的は、以下です。 Tensorflow Profilerの導入 tf.data.Dataset APIの主要な高速化手法の効果を確認

keras tunerでtf.kerasのハイパーパラメータを探索する

keras tuner 2019年10月末にメジャーリリースされたkeras tunerを試してみたいと思います。 github.com できること 機械学習モデルのハイパーパラメータの探索

ReformerをTrax (tensor2tensorの後継)で使ってみた

本記事の目的 Reformerの著者実装 (Trax) を使ってみる!!! Traxで学習・推論するための一連の流れをまとめる Reformerとは Transformerの大幅な計算効率の向上・省メモリ化に成功

2019年にやったこと・2020年にやりたいこと

2019年にやったことをふりかえる 年末なので、1年の振り返りをしたいと思います。

(Part 2) tensorflow 2 でhugging faceのtransformers公式のBERT日本語学習済みモデルを文書分類モデルにfine-tuningする

hugging faceのtransformersというライブラリを使用してBERTのfine-tuningを試しました。日本語サポートの拡充についてざっくりまとめて、前回いまいちだった日本語文書分類モデルを今回追加された学習済みモデル (bert-base-japanese, bert-base-japanese-c…

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

自然言語処理 Advent Calendar 2019の10日目です。本記事では、以下の論文の概要をまとめます。EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks [Jason W. Wei, Kai Zou; 2019].

Pyjuliaによるpythonからjulialangへの型変換まとめ

データ処理の高速化のためにPyjuliaを使ってpythonからjuliaの関数を使っています。本記事ではpyjuliaによって、pythonのデータ型がどのようなjuliaのデータ型に変換されるか、その対応表をまとめます。

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

アイテム情報とユーザー情報を組み合わせた、パーソナライズされた推薦を行う基本的なシステムを紹介します。重み付けしたcosine similarity (コサイン類似度)によるシンプルな手法です。いわゆるcontent-basedなrecommendになっています。 機械学習を使った…

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

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

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

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

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による特徴量…

ハイパーパラメータ自動最適化ツール「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を用い…

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が日本語に対応していないのは有名な問題です。(大量の豆腐が表示されてしまっています。) その、対応として、グローバルにフォントを指定する必要があります。しかし、仮想環境を使っている場合は、それぞれにフォントの設定をし…

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

tensorflow2.0のベータ版が公開されたので、慣れるためにtransformerを学習させて、言語生成を試して見たいと思います。 collaboratoryを使ってGPUで学習させます。 コードはこちら のチュートリアルを参考にしました。

機械学習を仕事で使えるようになるまでに読んだ本

現在、業務で機械学習モデルの構築やデータ分析を行っています。 その中で自分も機械学習をやってみたいけど何をどこまですればいいのかわからないという声を耳にすることが多いです。 なので、機械学習を仕事で使えるようになるまでに読んだ書籍を紹介しま…

アンパック代入を使って代入を簡単にする

pythonでは、「*args」や、「**kwargs」を使ってcollections型の変数を一括代入or受取できます。これは、アンパック代入と言われています。これを使って代入or受取を簡単にできる例をあげていきます。

pythonの参照渡しでハマらないために変数への代入時のメモリの使い方について調べる

pythonの参照渡しでハマらないために変数への代入時のメモリの使い方について調べる

dockerでubuntu16+python3.6+mecab(neolog-ipadic)を構築する

ubuntu上にpython3.6をいれて、mecab-python3でmecabが使えるような構成が以下のDockerfileで実現できる。

pythonで不必要な空白文字を消去してtokenize

区切り文字でstringを分割してリストにするとき、余計な空白文字が含まれる場合があって邪魔なので、除去する方法を書く。 結論 カンマ区切りでstringを分割する場合 tokens = [f.strip() for f in strings.split(",")]

DockerでDocker-composeを使った本番環境(Heroku)と開発環境の切り分け

Djangoのdeploy クラウドにdeployすることが主流なので、ローカル開発環境と本番運用環境ではDBの設定などが異なることが多いと思われる。そこで、djangoで本番環境と開発環境を切り分けるには、settings.pyを2つ作って使い分ける。これを実現するためにはdo…

DjangoのDatabase定義をpython-decoupleを使って環境変数のように扱う

Djangoのコードをgithubなどにuploadするときに、DB定義などのセンシティブな情報を隠す方法をまとめます。 versions python: 3.6.5 Django: 2.1

仮想環境を使ってJuliaのパッケージ管理

Julialangの仮想環境をつかったパッケージ管理についてまとめます。

dockerの不要なゴミを一括削除するコマンド群

docker container一括削除とタグのついていない ( tag) imageの一括削除コマンドのメモです。

python 3のwebスクレイピング (beautifulsoup 4)を使って論文リサーチを自動化する

今回のテーマはpythonのwebスクレイピングを用いた自動化です。python 3でbeautifulsoup 4を使って実装してみます。 arxivという論文検索サイトの新着情報を自動取得してみたいと思います。堅苦しく考えずに、とりあえずなにか作ってみて、webスクレイピング…

Django 2 のシンプルな開発環境構築手順

Djangoでwebアプリ開発をはじめるための簡素な手順をまとめます。新しいプロジェクトをはじめる度に開発環境構築に時間をかけるのは嫌ですよね。無駄な設定なしの手早い構築手順です。とりあえずwebアプリを作ってみたい、試したいという場合には十分な開発…