![]() |
初心者メイド |
自然言語の世界でBertが有名だけど、難しそうだね〜。
Attentionやtransformers、さらにRNN、LSTMとか意味不明な横文字ばかりでよくわからないな。
![]() |
Bertに強いメイド |
RNNやLSTMは、Bertが登場する前に自然言語の機械学習(深層学習)で使われていたんだけど、長い文章に弱い(記憶力が弱い)という欠点があったんだ。
記憶力が弱いを解決するために生まれたのがBert(厳密には、Attention機構が入ったRNN)と理解していればよいよ。
![]() |
だから、RNNやLSTMを知らなくても、この記事を読む分には大丈夫。
ライブラリーのおかげでBertが大変使いやすくなっているんだ。
このあとBertの実装例でもRNNやLSTMなどの横文字が一切出てこないから安心してな
概要
筆者は、Twitterのツイートのデータセットを使って感情分析(ネガの判別)をしました。感情分析には、日本語のBertを使用しました。
今回紹介するものでBertを試しに動かすのであれば、GPUも使えるGoogle Colaboratoryで十分です。
データセットは、以下の場所からダウンロードが可能です。
すでに、ラベル付けもされているので、まずは分類問題を試してみたい人にオススメです。
この記事を読む上で最低限知っておいてほしい知識があります
- ニューラルネットワークの概念
- ニューラルネットワークを使った機械学習手法
- pytorchの簡単な使用方法
上記の知識は、Bertに限らず、ディープラーニングでは必ず使うので抑えておくべきものです。
ニューラルネットワークの基礎をちゃんと学びたい
ニューラルネットワークの基礎を学びたい!
そう思ったら、以下のUdemyの講座が役立ちます。
pythonの基礎を学んでいたら3時間ほどあれば一通り、ライブラリーを使用しない、スクラッチのニューラルネットワークの実装方法について学べます。
スクラッチでの実装方法を学ぶことで、より、ニューラルネットワークの動きがイメージできるようになります。
👉みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 【2020年最新版】
Bert実装の流れ
ここからは、日本語Bertを使った実装方法について解説します。
実装の流れは以下の通りです。
- mecabなどの形態素のライブラリーをダウンロードする。
- transformersをインストールする
- 教師データを読み込む(読み込み後は、前処理が必要だが省いている)
- 日本語の事前学習モデルを読み込む
- pytorchにて訓練モードに切り替える
- GPUモードに切り替える
- 最適化アルゴリズムをAdamWに設定する
- 教師データをpythochで使えるようにtensor型に変換する
- 教師データから、訓練用データとテスト(評価)データと分ける
- 訓練する(訓練のところでデータをcpuからgpuで扱えるように変換している)
- 作成したモデルを使ってテスト(評価)する
- 作成したモデルを保存する
上記の流れで、ツイートの分類問題(ツイートが「ネガ」「それ以外」)を解きました。
教師データは、約2千件ほどでしたが、分類精度としては8割ほどでした。
具体的なコードについては、colabに載せました。
データセットを読み込むところは、そのまま公開できなかったため、ダミーデータで対応しています。
日本語Bertの実装例
huggingfaceが日本語の事前学習モデルを反映させてくれました。
そのおかげもあり、transformersライブラリを使えば日本語の分類問題が簡単に扱えるようになりました。
実装例を示します。
さらに、colobにもあるので、試してみたい人はすぐに動かせるはずです。
まとめ
いかがですか?
Bertは難しいイメージがありますが、ライブラリーを使って2値分類程度であれば、
比較的簡単に扱えるのではないでしょうか?
コメント
はじめまして。
あなたの記事に
大変興味が湧きました。
私はメンタルヘルスに関連する
事を手掛けています。
メンタルに病んでいる方々の
感情言語表現を辞書化したいと
考えてます。
メンタルの状態を可視化できればと考えています。あなたがもしご興味や関心があればお力になって頂ければ幸いです。
宜しくお願い致します。
[…] 【AI】日本語Bertでファインチューニングしてツイートの感情の分類を解く! […]
[…] 【AI】日本語Bertでファインチューニングしてツイートの感情の分類を解く! […]