こんにちは。 リサーチャーの勝又です。 私はレトリバで自然言語処理、とくに要約や文法誤り訂正に関する研究の最新動向の調査・キャッチアップなどを行っております。
今回の記事では、Pyseriniという情報検索の研究で使われるPythonライブラリの簡単な使い方、拡張方法について紹介します。
続きを読むこんにちは。
レトリバでは、研究動向・業界動向の把握のため、研究グループの人間は積極的に国内学会に参加しています。今回は、自然言語処理国内最大級のカンファレンスである言語処理年次大会に参加しました。
言語処理年次大会は名の通り、自然言語処理学会が年に一度開催する学会です。主に国内の自然言語処理の研究者が一同に解する機会でもあります。レトリバは創業以来スポンサーしており、今年もゴールドスポンサーとして支援いたしました。本年は数年ぶりに沖縄で現地開催され、過去最大の参加者数、論文投稿数でした。また、運営委員の方々の多大な努力により、参加者間の交流も活発行われていました。運営委員の方々には感謝申し上げます。
本大会では、弊社から勝又が発表を行いました(発表内容)。こちらは、先月記事を公開していますので、概要はこちらをご覧ください。また、飯田も博士課程での研究発表である検索に関する研究の発表を行いました(発表内容)。
以下では、印象に残った発表についてを紹介します。
文法誤り訂正(Grammatical Error Correction; GEC)は非母語話者が書いた、誤りを含んでいるかもしれない文を入力、その誤りを訂正した文を出力するタスクです。(この辺りの詳細な考察はこちらやこちらが参考になります。) しかし、この問題設定だと言語学習としてはちょっと難しさもあるかと思います。 例としてこちらの発表や先行研究でも使われている、「I am leaving in Tokyo.」という英文を考えてみます。 誤った英文ではありますが、この英文には直し方として「I am living in Tokyo.」や「I am leaving Tokyo.」などが考えられます。 仮に、英語学習者が、気持ちとしては「東京に住んでいる」という気持ちで「I am leaving in Tokyo.」を書いたのに、システムが「I am leaving Tokyo.」を出力したら、言語学習者は「in はなくて良い」というような誤解を生じるかもしれません。 このように、言語学習者の意図した内容をシステムに入力できないために、本来の意図とは異なる訂正をシステムが行ってしまう可能性があります。 そのため、従来の非母語話者の作成した文だけでなく、その意図を示す原言語文(想定としては母語(L1)だと思います)を入力として与えることで、より意図を汲んだ訂正を行うタスクを設定する研究は(少なくとも自分にとっては)需要がありそうです。(なおこの場面設定は、この研究を知って感じた私の個人的な解釈であり、論文で言明されたものではありません)
この発表ではより簡易な設定として翻訳誤り訂正(Translation Error Correction; TEC)に取り組んでいます。 彼らはTECのタスク定義として、入力に(英語)誤り文と、(日本語)翻訳文を用意して、訂正した英語を出力としています。 このようにすることで、入力の誤り文、翻訳文の有無で性能が変化するかどうかを検証し、そもそも別言語の情報が誤り訂正に役立つかどうかを調査しています。 また、先行研究の手法に対してさらに文法誤り訂正でよく使われる疑似誤りがTECでも有効かどうかの検証なども行っています。
個人的にこの問題設定は色々練ることができるものだと思っていて、かなり面白いような気がしています。 冒頭の非母語話者の意図云々は私の個人的な意見なので、もっとうまい問題設定がありそうな気がしますし、意図の表現として翻訳文ではなく、最近流行りのInstructにしてしまっても面白そうです。 今回は原言語として日本語の文が追加されることによる精度の変化に関する内容になりましたが、日本語だけでなくL1の文として任意のものを受け取っても精度が出るかなど、興味は尽きません。 問題設定、評価データの構築などやることも多く、是非とも今後発展していってほしい研究だと感じました。
執筆:勝又
こちらの発表はBERTの事前学習および下流タスクへのファインチューニングの際に用いるTokenizerによって性能がどのように変わるのかを評価したという内容でした。BERTなど大規模言語モデルを用いる際、形態素解析器にどれを用いたらいいのか、或いは用いなくてもいいのかという点は悩みの種になります。例えばHuggingface Transformersを用いる際に形態素解析器を用いずサブワード分割のみを用いるのであれば、sentencepieceのモデルを用意すればexamplesにあるスクリプトを用いることができます。一方で形態素解析器による分かち書きを行う場合にはtransformersのtokenizerにテキストを渡す前に自前で分かち書きを行うか、BertJapaneseTokenizerが対応しているモデルを使う必要があります。また、形態素解析器によって処理速度に差があり、もし処理に時間がかかる形態素解析器を用いた方が性能が大幅に良いとなると、性能と処理時間とのトレードオフがまた検討事項になります。
この発表ではMecab(IPAdic, Neologd)、Juman++、Sudachi、Vaprettoといった形態素解析器とByte Pair Encoding(BPE)、WordPiece、Unigramといったサブワード分割の組み合わせによる下流タスクの精度への影響を網羅的に評価していました。結果としては形態素解析器間に有意な差は無いが、形態素解析は行った方が良いという形でした。また、サブワード分割に関してはBPE或いはUnigramを用いた方が良いとのことでした。
形態素解析による前処理は必要*1ですが、個人的には処理の早いものでよさそうという指針が得られて良かったので印象に残った発表でした。
執筆:西鳥羽
この発表は、近年盛んに研究されている、オープンQ&Aシステムを専門家向けかつ内部文書に対して適用した研究です。 オープンQ&Aシステムは基本的には多くの教師データが必要であり、専門家向けという点においては、その教師データ作成およびその量がボトルネックになります。これらのボトルネックへの対処方法の工夫がさまざまに見られる点が、個人的には本研究の興味深い点でした。
データに関する流れとしては、
なお、3. については、回答生成時に3フレーズ生成することで、データを増やしています。なお、実際にはこのプロセスは、質問と回答のログデータを見て専門家がアノテーションすることを期待しているということです。
システムの構成としては、通常のオープンQ&Aシステムで用いるRetriever・Readerに加えて、誤答を抑制するVerifierを用いています。VerifierはこちらのACLでの発表でも有効とされているようです。 結果、データを増やしていくほど、誤答数が下がっていきました。発表中にはユーザの印象も語られており、もある程度正解ではあるものの、微妙に条件が異なるためそのままでは使えないという程度まではできていたということでした。
感想ですが、和訳+数百件の教師データでもオープンQ&Aシステムとして成立することに驚きました。ただし、質問種類をある程度絞っており、entity抽出系のシステムになっていたようです。 また、Q&Aシステムとなることで、複数の文書をenittyの観点からまとめらるため、単純な検索でのアノテーションコストに比べてを大幅に削減できるのではないかという感想を持ちました。クエリをログするシステムがあれば、アノテーション自体のprecisionは高くできそうです。
なお、個人的には検索のみの場合の精度面が気になりました。Fusion-in-Decoderの論文でも、Readerからのフィードバックを用いることがさらなる精度向上につながっているとされています。
オープンQ&Aシステムとして数百件頑張るのか、検索システムとしてアノテーションをつけていくのか、ChatGPT以後、生成が非常にうまくいく今日において、どちらで特定ドメインに対して教師を付与していくのか、そのデータ拡張方法をどうやっていくのかは、今後も注目していきたいと思いました。
執筆:飯田
レトリバ研究グループでは自社製品の研究開発を行うだけではなく、学会イベントなどのスポンサー・大学との共同研究の遂行・研究成果の対外発表など、学術コミュニティへの貢献を積極的に行っています。∪・ω・∪また、レトリバは絶賛インターン募集です。ご興味ある方はこちらよりお問い合わせください。
*1:言語処理年次大会後にリリースされたSentencePieceでは形態素解析器には事前分割制約をオプションで指定する機能が搭載されたため、形態素解析器による分割を反映したサブワード分割をSentencePieceだけで行うことができるかもしれません。Sentencepiece の分割を MeCab っぽくする - Qiita
こんにちは。レトリバの飯田(@HIROKIIIDA7)です。TSUNADE事業部 研究チームのリーダーをしており、分類エンジンの開発・マネジメント、検索分野の研究、チームマネジメントを行っています。
今回は、前回の記事から自己紹介に追加されている「分類エンジンの開発・マネジメント」について書いていきます。これは、チームで取り組みました。
続きを読むこんにちは。Chief Research Oficerの西鳥羽です。今回はDeepSpeedを用いてHuggingface Transformersの複数ノードでの学習をする方法を紹介します。
Huggingface Transformersは事前学習済みモデルを簡単に扱うことができるフレームワークです。BERTなどの言語モデルをはじめとして最近はWhisperなどの音声モデル、DETRなどの画像モデルも扱えるようになっています。Huggingface Transformersでは数多くの事前学習済みモデルを用意しているため事前学習を行わなくても用いることは可能ですが、多くのモデルで事前学習にも対応しています。
Huggingface Transformerでは複数GPUが搭載されている単一のサーバーでの学習に対応していて、そちらは特に設定の変更などは無く学習の実行ができます。複数のGPUが搭載された複数のサーバーを用いた学習は、このブログでも紹介したことがある(紹介1 紹介2)DeepSpeedというライブラリを用いると行うことができます。
続きを読むこんにちは。レトリバのリサーチャーの木村@big_wingです。
今回はNeurIPS2022で発表されたSignRFF: Sign Random Fourier Featuresを紹介します。
続きを読むこんにちは。 リサーチャーの勝又です。 私はレトリバで自然言語処理、とくに要約や文法誤り訂正に関する研究の最新動向の調査・キャッチアップなどを行っております。
ニューラルネットワークモデルの軽量化や推論高速化手法として、蒸留を利用した小さいモデル作成が挙げられます。 今回はtask-specific BERTの蒸留をDeepSpeed Compressionで試してみようと思います。
続きを読むこんにちは。レトリバの飯田(@HIROKIIIDA7)です。TSUNADE事業部 研究チームのリーダーをしており、分類エンジンの開発・マネジメント、検索分野の研究、チームマネジメントを行っています。今回は、教師なしの文表現作成手法DiffCSEを紹介します。なお、日本語のより詳しい資料はこちらにありますので、合わせて参考にしてください。
続きを読むこんにちは。リサーチャーの古谷です。
私は普段、音声認識の研究開発をしています。
今回の記事では、音声認識がどのように実現されているのかを、非技術者の方にも伝わるように紹介してみたいと思います。
あまり込み入った話はできないので、スタンダードな教師あり学習に限定して、音声認識の概要を解説してみます。
非技術者の方に伝えることを目指す都合で、かなり説明を端折っている部分があります。この記事を読んだだけでは絶対に実装できるようにならないので、実装レベルの情報が欲しい方はごめんなさい。あくまで「なんとなく音声認識の雰囲気が分かる」というぐらいの読み物としてご覧ください。
また、音声認識の歴史の話はせずに、現在主流の深層学習に限ったお話をします。
続きを読む