自然言語処理の王様「Bert」の論文を徹底解説 - Qiita
身近な自然言語処理(NLP) 「自然言語を処理する」ということ一体どういうことなのでしょうか? 日々の生活でも取り入れられて、知らない間に私たちの生活を便利にしてくれている自然言語処理(NLP)について以下をはじめ様々なものがあります。 日本語入力の際のかな文字変換 機械翻訳 対話システム 検索エンジン 等々 3. 自然言語処理の流れ 以上のような技術を実現するのが自然言語処理で、まずは処理するための「前処理」というものを見ていきます。 はじめに、解析するための「元のデータ」が必要になり、このときできるだけ多くの高品質なデータを収集すると、後の処理が楽になるとともに、最終的に出来上がるモデルの品質が高くなります。 データの収集を終えたら、必要な部分を取り出したり不要なデータを削除したりします。 3-1. 自然言語処理のための前処理 3-1-1. 自然言語処理 ディープラーニング図. コーパス 近年、コンピュータの記憶容量や処理能力が向上し、ネットワークを介してデータを交換・収集することが容易になりました。 その為、実際の録音やテキストなどを収集し、そのデータを解析することによって、言語がどのように使われているかを調べたり、そこから知識を抽出したりといったことが広く行われています。 このように、言語の使用方法を記録・蓄積した文書集合(自然言語処理の分野ではコーパスと呼ぶ)が必要になります。 3-1-2. 辞書 日本語テキストを単語に分割し、ある日本語に対する「表層形」「原形」「品詞」「読み」などを付与するなど何らかの目的を持って集められた、コンピュータ処理が可能なように電子的に情報が構造化された語句のリストである辞書も必要です。 3-1-3. 形態素解析 テキストを言語を構成する最小単位である単語を切り出す技術(形態素解析)も必要になります。 単語は言語を構成する最小単位で、文書や文を1単位として扱うよりも正確に内容を捉えられ、文字を1単位として扱うよりも意味のある情報を得られるというメリットがあるため、自然言語処理では、多くの場合、単語を1つの単位として扱っています。 英語テキストを扱う場合、基本的に単語と単語の間はスペースで区切られているため、簡単なプログラムでスペースを検出するだけで文を単語に分割できるのですが、日本語テキストでは通常、単語と単語の間にスペースを挿入しないため、文を単語に分割する処理が容易ではありません。 つまり、形態素解析は、日本語の自然言語処理の最初のステップとして不可欠であり、与えられたテキストを単語に分割する前処理として非常に重要な役割を果たしています。 3-1-4.
自然言語処理 ディープラーニング 適用例
出力ユニットk 出力ユニットkの 隠れ層に対する重みW2 21. W2 行列で表現 層間の重みを行列で表現 22. Neural Networkの処理 - Forward propagation - Back propagation - Parameter update 23. 24. Forward Propagation 入力に対し出力を出す input x output y 25. z = f(W1x + b1) 入力層から隠れ層への情報の伝播 非線形活性化関数f() tanh とか sigmoid とか f(x0) f(x1) f(x2) f(x3) f(x) = 26. tanh, sigmoid reLU, maxout... f() 27. ⼊入⼒力力の情報を 重み付きで受け取る 隠れユニットが出す 出⼒力力値が決まる 28. 29. 出⼒力力層⽤用の 非線形活性化関数σ() タスク依存 隠れ層から出力層への情報の伝播 y = (W2z + b2) 30. 31. タスク依存の出力層 解きたいタスクによって σが変わる - 回帰 - 二値分類 - 多値分類 - マルチラベリング 32. 実数 回帰のケース 出力に値域はいらない 恒等写像でそのまま出力 (a) = a 33. [0:1] 二値分類のケース 出力層は確率 σは0. 0~1. 0であって欲しい (a) = 1 1+exp( a) Sigmoid関数入力層x 34. 多値分類のケース 出力は確率分布 各ノード0以上,総和が1 Softmax関数 sum( 0. 2 0. 7 0. 1)=1. 0 (a) = exp(a) exp(a) 35. マルチラベリングのケース 各々が独立に二値分類 element-wiseで Sigmoid関数 [0:1] [0:1] [0:1] y = (W2z + b2) 36. ちなみに多層になった場合... 出力層だけタスク依存 隠れ層はぜんぶ同じ 出力層 隠れ層1 隠れ層N... 37. 38. 自然言語処理 ディープラーニング python. 39. Back Propagation 正解t NNが入力に対する出力の 予測を間違えた場合 正解するように修正したい 40. 修正対象: 層間の重み ↑と,バイアス 41. 誤差関数を最⼩小化するよう修正 E() = 1 2 y() t 2 E = K k=1 tk log yk E = t log y (1 t) log(1 y) k=1 t log y + (1 t) log(1 y) いずれも予測と正解が 違うほど⼤大きくなる 42.
自然言語処理 ディープラーニング Ppt
情報抽出 最後に、自然言語から構造化された情報を抽出します(情報抽出)。 例えば、ある企業の社員情報を記録したデータベースに、社員番号、氏名、部署名、電子メールアドレスなどをフィールドや属性として持つレコードが格納されているとき、構造化されたデータは、コンピュータでそのまま処理できます。 4. 自然言語処理の8つの課題と解決策とは? ここからは上記の自然言語処理の流れにおいて使われている具体的な手法と、そこに何の課題があってどのような研究が進行中であるかを簡単に紹介します。 4-1. 形態素解析に代表される自然言語処理の仕組みやツールまとめ | Cogent Labs. 固有表現抽出 「モノ」を認識する 日付・時間・金額表現などの固有表現を抽出する処理です。 例)「太郎は5月18日の朝9時に花子に会いに行った。」 あらかじめ固有表現の「辞書」を用意しておく 文中の単語をコンピュータがその辞書と照合する 文中のどの部分がどのような固有表現かをHTMLのようにタグ付けする
太郎 は5月18日 のに花子 に会いに行った。 人名:太郎、花子 日付:5月18日 時間:朝9時 抽出された固有表現だけを見ると「5月18日の朝9時に、太郎と花子に関係する何かが起きた」と推測できます。 ただし、例えば「宮崎」という表現は、地名にも人名にもなり得るので、単に文中に現れた「宮崎」だけを見ても、それが地名なのか人名なのかを判断することはできません。 また新語などが常に現れ続けるので、常に辞書をメンテナンスする必要があり、辞書の保守性が課題となっています。 しかし、近年では、機械学習の枠組みを使って「後続の単語が『さん』であれば、前の単語は『人名』である」といった関係性を自動的に獲得しています。 複数の形態素にまたがる複雑な固有表現の認識も可能となっており、ここから多くの関係性を取得し利用する技術が研究されています。 4-2. 述語項構造解析 「コト」を認識する 名詞と述語の関係を解析する(同じ述語であっても使われ方によって意味は全く異なるため) 例)私が彼を病院に連れていく 「私が」「彼を」「病院に」「連れて行く」の4つの文節に分け、前の3つの文節が「連れて行く」に係っている。 また、「連れて行く」という出来事に対して前の3つの文節が情報を付け足すという構造になっている。 「私」+「が」→ 主体:私 「彼」+「を」→ 対象:彼 「病院」+「に」→ 場所:病院 日本語では助詞「が」「に」「を」によって名詞の持つ役割を表すことが多く、「連れて行く」という動作に対して「動作主は何か」「その対象は何か」「場所は」といった述語に対する項の意味的な関係を各動詞に対して付与する研究が進められています。 4-3.
自然言語処理 ディープラーニング Python
機械翻訳と比べて 小さなタスクにおいても大きいモデルを使うと精度も上がる 。 2. 下流タスクが小さくてもファインチューニングすることで事前学習が大きいため高い精度 を出せる。 1. 3 BERTを用いた特徴量ベースの手法 この論文を通して示した結果は、事前学習したモデルに識別器をのせて学習し直す ファインチューニング によるものである。ここではファインチューニングの代わりに BERTに特徴量ベースの手法を適用 する。 データセットに固有表現抽出タスクであるCoNLL-2003 [Sang, T. (2003)] を用いた。 特徴量ベースの$\mathrm{BERT_{BASE}}$はファインチューニングの$\mathrm{BERT_{BASE}}$と比べF1スコア0. 3しか変わらず、このことから BERTはファインチューニングおよび特徴量ベースいずれの手法でも効果を発揮する ことがわかる。 1. 6 結論 これまでに言語モデルによる転移学習を使うことで層の浅いモデルの精度が向上することがわかっていたが、この論文ではさらに 両方向性を持ったより深いモデル(=BERT)においても転移学習が使える ことを示した。深いモデルを使えるが故に、さらに多くの自然言語理解タスクに対して応用が可能である。 2. まとめと所感 BERTは基本的に「TransformerのEncoder + MLM&NSP事前学習 + 長文データセット」という風に思えますね。BERTをきっかけに自然言語処理は加速度を増して発展しています。BERTについてさらに理解を深めたい場合はぜひ論文をあたってみてください! ツイッター @omiita_atiimo もぜひ! 3. 参考 原論文。 GLUE: A MULTI-TASK BENCHMARK AND ANALYSIS PLATFORM FOR NATURAL LANGUAGE UNDERSTANDING, Wang, A. (2019) GLUEベンチマークの論文。 The feature of bidirection #83 [GitHub] BERTの両方向性はTransformers由来のもので単純にSelf-Attentionで実現されている、ということを教えてくれているissue。 BERT Explained! 自然言語処理(NLP)とは?具体例と8つの課題&解決策. [YouTube] BERTの解説動画。簡潔にまとまっていて分かりやすい。 [BERT] Pretranied Deep Bidirectional Transformers for Language Understanding (algorithm) | TDLS [YouTube] BERT論文について詳解してくれている動画。 Why not register and get more from Qiita?
自然言語処理 ディープラーニング図
最後に 2021年はGPT-3をはじめとした自然言語処理分野の発展が期待されている年であり、今後もGPT-3の動向を見守っていき、機会があれば触れていきたいと思います。 ※2021年1月にはGPT-3に近い性能の言語モデルをオープンソースで目指す「GPT-Neo」の記事 ※9 が掲載されていました。
現在は第3次AIブームと呼ばれ、その主役は、ディープラーニング(深層学習)です。 ディープラーニングは、学習によって自動で特徴量を抽出できるため、大量のデータを入力さえすれば、勝手に賢くなると思われています。 そこで、一時は、大量の会話データを入力すれば、自動で会話できるようになるかと思われていましたが、実際は、そうはなりませんでした。 それでは、なぜ、ディープラーニングは、会話、自然言語処理に対応できないのでしょう?