機械学習・自然言語処理の勉強メモ

学んだことのメモやまとめ

PyTorch

Pytorch:CNNで文字表現の抽出

NLPにCNNを利用したモデルはすっかり当たり前になりました。少し前に「CNNでテキスト分類」という記事を書きましたが、 その時はPytorchでCNNを扱うための基本的なコードだけに留まっていました。 kento1109.hatenablog.com今回はNERなどで用いられる文字情…

pytorch-transformersを触ってみる⑤

はじめに 前回はBERTのfine tuningということで、NER(固有表現認識)を試してみました。 kento1109.hatenablog.com今回はfine tuningではなく、BERTの事前学習について見ていきたいと思います。 pre-training from scratch ただ、pytorch-transformersでの…

pytorch-transformersを触ってみる④

はじめに 前回はfine tuningということで、GLUEタスクのSST-2に取り組みました。 kento1109.hatenablog.comまた、GLUEタスクのfine tuningを実行するためのスクリプト(run_glue.py )のコードを眺めました。今回は、CoNLL(NERの共通タスク)のためのfine t…

pytorch-transformersを触ってみる③

はじめに 前回は日本語でのpytorch-transformersの扱い方についてまとめました。 kento1109.hatenablog.comこれまでpytorch-transformersの基本的なところを英語・日本語で動かしてみました。今回はもう一歩進んでfine tuningについてまとめてみます。ドキュ…

pytorch-transformersを触ってみる②

はじめに 前回はの入門ということで、QuikStartの内容を触ってみました。 kento1109.hatenablog.com前回は英語でしたが、日本語のテキストを扱う場合はそのまま使うことは出来ません。 ということで、今回はpytorch-transformersで日本語のテキストを扱って…

pytorch-transformersを触ってみる①

今更ながら、pytorch-transformersを触ってみます。 このライブラリはドキュメントが充実していて、とても親切です。 なので、今回はドキュメントに基づいて触ってみただけの備忘録です。 以下、有名どころのBERTで試してます。詳しいことはここなどを参照し…

tensorboardXの基本的な使い方①

はじめに 今更ですが、tensorboardを触ってみました。普段TensorFlowを使わないので、何となく避けてたのですが、 tensorboardXは「tensorboard for pytorch」ということで、 触ってみました。結論から言うとめちゃくちゃ簡単で便利でした。 なので、備忘録…

Pytorch:テキストの前処理(torchtext)④

はじめに torchtextの使い方に関するメモ。入力の素性をカスタマイズしたい場合について例えば、各系列に付与したカラムを入力に含めたい場合 (0,1は系列の何らかの情報) a 1 b 0 c 1 d 0 e 1 f 0これをどうハンドリングするかについて少し考えた。 簡単な…

Pytorch:テキストの前処理(torchtext)③

はじめに torchtextの使い方メモ第三弾。前回の内容は下記参照 kento1109.hatenablog.com今回の内容は1つだけ。 POSやNERなどのTaggingを考える場合、どのようにtorchtextで読み込めばよいか。前回まではtorchtextでデータをファイルから読む際、想定されて…

Pytorch:ライブラリの誤差関数の構造を理解する

はじめに 今まで当たり前のように誤差関数を使っていた。 既に用意されたものであればそれで問題ない。しかし、誤差関数を自作したいと思った場合、 ライブラリの誤差関数の構造を理解している必要がある。そんなわけでライブラリの誤差関数について調べたの…

Pytorch:CNNでテキスト分類

はじめに かなり前にTheanoでの実装例を解説した。TheanoでSentiment analysis (CNN)① - 機械学習・自然言語処理の勉強メモ今回は、Pytorchでの実装例を解説する。下記のコードを実装例としてみていく。 github.com前処理や学習のところは今回の本質ではない…

Pytorch:テキストの前処理(torchtext)②

前回のtorchtextの使い方の続き。kento1109.hatenablog.com今回、実際の処理でどうすれば良いんだってなったところを確認する。 訓練用と検証用 訓練用と検証用のデータを取り込む。 Datasetクラスのsplitsメソッドが使用できる。使い方は以下の通り TEXT = …

Pytorch:RNNで名前を生成する(文章生成)

はじめに PytorchでのSeq2Seqの練習として、名前生成プログラムを実装する。実装は以下のチュートリアルを参考に進めた。Generating Names with a Character-Level RNN — PyTorch Tutorials 0.3.1.post2 documentation目標はSeq2Seqの理解であるが、まずは基…

Pytorch:単語のベクトル表現をセットする(torchtext)

はじめに Pytorchの処理で学習済みの単語分散表現(Word2Vec, Glove等)を使いたい場合がある。直接、Embedding層にセットする場合が以下の方法で問題ない。 kento1109.hatenablog.com前処理として、torchtextを利用する場合はそうはいかない。 torchtextは…

Pytorch:テキストのバッチ化(BucketIterator)

前回、torchtextに関する基本をまとめた。kento1109.hatenablog.com今回、もう少し実用的なことをメモする。 BucketIterator テキストを学習データとする場合、当然、文章の系列長は異なる。文章をバッチ化する場合、パディングして系列長を揃える必要がある…

Pytorch:Embeddingに学習済みの重みを使う

やりたいこと 事前にWord2Vecなどで学習した分散表現をネットワークの重みとして用いる。結論としては、Embedding層の重みにテンソル型に変換した分散表現行列をセットするだけで良かった。備忘録としてコードを残しておく。 (ここでは、Googleの学習済みの…

PyTorch:Bi-LSTM+CRF②(予測)

はじめに 前回は学習に関するコードを読んだ。 kento1109.hatenablog.com今回は「予測」の部分を読んでいく。 予測 予測時は、viterbi algorithm を用いて効率的に計算する。 最後に_viterbi_decode関数を確認する。 _viterbi_decode グラフの最短経路を求め…

PyTorch:Bi-LSTM+CRF①(学習)

はじめに 今回は、Bi-LSTM+CRFに関して整理する。 最近の深層学習を用いた系列ラベリングに関する論文は、この手法でSOTAを達成していることが多い。尚、Bi-LSTM+CRFの基本的なことに関しては、以前のTheanoでの記事で述べた。 kento1109.hatenablog.comTh…

PyTorch:LSTMの実践(CoNLL)

はじめに 前回、LSTMの基礎的な使い方を整理した。 kento1109.hatenablog.comだいたい、使い方は分かったので実際にタスクに取り組んでみる。今回は「固有表現抽出」で試してみる。 CoNLLについて CoNLLは、「Conference on Computational Natural Language …

PyTorch:LSTMの基礎

はじめに 今回はNLPでよく使われるLSTMネットワークについて整理する。 自分で各ゲートのパラメータを記述したTheanoに比べると簡単。 下記のTutorialのコードを説明しながらLSTMの書き方について理解していく。 Sequence Models and Long-Short Term Memory…

PyTorch:テキストの前処理(torchtext)①

torchtext NLP用のデータローダgithubはここ。 github.com下記のチュートリアルがとても丁寧だった。 github.comまた、日本語の説明だと下記が分かりやすかった。 [DLHacks LT] PytorchのDataLoader -torchtextのソースコードを読んでみた- from Deep Learni…

PyTorch入門④:utilsを使う。(torch.utils.data)

torch.utils.data データセット読み込み関連ユーティリティ。 DataLoaderは、データのロード・前処理をするためのモジュール。 必ずしもこれを使わなければいけないことは無いが、前処理を楽にしてくれる。 データセットのバッチ化 データセットのシャッフル…

PyTorch入門③:Logistic Regression

Logistic Regression 今回はLogistic Regression。 下記のチュートリアルを参考に実装した。 github.com尚、コード全体はここに置いた。 github.com データセットだが、チュートリアルはMNISTを使っているが、今回はsklearnのdigits datasetを使った。 (ロ…

PyTorch入門②:Neural Network

ネットワークはtorch.nnパッケージを使用して構築する。今回は下記にあるサンプルコードを使う。 Learning PyTorch with Examples — PyTorch Tutorials 0.3.0.post4 documentationネットワークは「入力層ー中間層ー出力層」の三層構造で線型回帰問題を想定。…

PyTorch入門①:Tensors~Autograd

はじめに 流行りに乗っかってPyTorchを勉強する。 最近、PyTorchで実装する論文が急増しているらしく、とりあえずソースコードが読めるようになりたい。 Tensors Numpyのndarrays(多次元配列)のようなもの。 GPUの高速計算のために使われるオブジェクトと…