ChatGPTによる出力テキストが多くの人の期待を超え、驚愕しています。 その背景には人の評価を模倣する報酬モデルを利用した強化学習の発展があります。 この論文は人の好みに合うテキストを生成するための各種アプローチに対する評価を行なっており、なぜこのようなアプローチが取られているのか?という疑問の一つの答えになるのではないかと思います。
本記事では Takamuraら が提案した、spinモデルを用いてWordNetから単語の極性を学習する方法 (Extracting Semantic Orientations of Words using Spin Model, ACL’05) を紹介します。 自然言語処理ではテキストが良いことを言っているのか、悪いことを言っているのかを自動で推定する感情分析と呼ばれる研究があります。 感情分析をおこなうために、ある単語が良いことなのか、悪いことなのかを表す極性を含む知識源を活用するアプローチがあります。 近年ではラベル付きテキストコーパスを用意して、BERTを始めとするニューラルネットワークで分類モデルを学習するといった流れが主流ではありますが、このようなアプローチでも言語知識が活用できる余地はあります 1。 Takamuraらの論文は15年以上も前のものですが、単語の極性を獲得する論文としてよく引用されています。 また最近ではニューラルネットワークを使わない自然言語処理に触れる機会が少なくなったため勉強のため記事にします。
BERTの学習で用いるoptimizerでbiasやlayer normalizationのパラメータだけがweight decayの対象外となっていることについて疑問は持ったことはあるでしょうか。たとえばhuggingfaceのtransformersのissueでもそのような質問がありますが、「Googleの公開しているBERTがそうしているから再現性のために合わせた」と回答されています。ではなぜGoogleのBERT実装はそのような設定にしたのでしょうか。これらのOSSを利用されている方にも天下り的に設定している方もいらっしゃると思います。本記事ではBERTなどの学習で用いられるoptimizerのweight decayで、biasやlayer normalizationのパラメータが対象外となっている理由について解説します。
本記事ではWNGT 2020のefficiencyシェアドタスクに提出されたEfficient and High-Quality Neural Machine Translation with OpenNMTを紹介します。 このタスクでは精度だけではなく、省メモリ、高速であることに焦点を当てています。 自然言語処理タスクの多くはニューラルネットワークに基づく巨大なモデルによって最高精度が塗り替えられていますが、実用上は精度以外にもメモリや速度の観点を検討しなければならない場面が多く、現実に即したタスクとなっています。 紹介する論文では機械翻訳で実験を行っていますが、その他のタスクに対しても適用できそうなテクニックが多く、勉強になりそうだったので紹介することにしました。 このタスクに参加した他のシステムも精度や速度などの指標においてパレート曲線状にあり、それぞれのシステムが重きをおいた指標が異なっています。 本記事で紹介する論文は速度、省メモリに焦点を当てています。
本記事では機械学習モデルを効率的に構築するためのアプローチのひとつである、能動学習を利用可能なOSSについて調査し、その概要をまとめます。 機械学習を活用するときは、モデルを構築するために必要な学習データをどのように作成するかという点を検討しなければなりません。 コンペなどで利用されるベンチマークデータでは規模の大きな学習データが用意されていますが、自分のプロジェクトで機械学習を利用するために必要な学習データがすでに揃っているというケースはあまり多くありません。 効率的に学習データを作成するための手法として、能動学習というものがあります。 能動学習は、予め学習済みの機械学習モデルが予測結果に自信のない事例に対して、人の作業者にラベル付を依頼し、新しく作成された学習データでモデルを再学習するような処理の流れになります。 やみくもに事例にラベルをつけるのではなく、現在のモデルが失敗しやすい事例に対してラベルを付与するため、効率的な学習データの構築が期待できます。 本記事を読むことで、状況に合わせたOSSの選定に役立てられます。
本記事では日本語を対象としたLSTMに基づく文書分類モデルをPyTorchコード付きで紹介します。 以前、LSTMを用いた言語モデルについて紹介しました ( [自然言語処理] LSTMに基づく言語モデルの学習 (PyTorchコード付き) ) が、ニューラルネットワークを用いた自然言語処理の応用例として文書分類のほうがイメージしやすそうなので、こちらについても紹介したいと思います。 実験にはライブドアコーパスから作成した、記事の見出しに対して9つのカテゴリのうち、どれか1つが付与されたデータを使います。 本記事を読むことで日本語を対象に、ニューラルネットワークを活用した自然言語処理の概要を知ることができます。 また、PyTorchで事前学習済みの単語分散表現を扱う方法も紹介しています。
本記事では画像認識系の国際会議 ECCV2020のチュートリアルでNVIDIAが発表した資料 PYTORCH PERFORMANCE TUNING GUIDE の内容をまとめるとともに、理解の助けになるような関連情報を参照します。 PyTorchは簡単にニューラルネットワークの実装のを容易さだけでなく、処理速度にも注意を払って開発が進められています。 プログラムにほんの少し修正を加えるだけで高速化できる可能性があります。 本記事を読み、実践することで、手元のPyTorchプログラム (特にGPUを使った学習処理) を高速化できる可能性があります。