はじめに
自然言語処理 基礎を画像処理エンジニアの側面から、内容を理解しようと試みた内容である。
書籍から学んだ知見の上に、画像処理の観点からの考察を導入することで、内容をより理解しようとした際の備忘録である。
理解内容概要
画像処理と自然言語処理の違いのポイント
入力値が特徴量化されているかの違い
- 自然言語処理:離散的な記号である「文字」を処理可能な特徴量に変換するところから始める必要性
- 画像処理:センサーにて画像化された特徴量から始まる(光線をセンサ撮像するところが、初期特徴量生成を担う)
入力値がしばしば可変長であるかの違い
- 自然言語処理:時系列的な可変長を扱う上、その位置関係も非常に重要であるため、アルゴリズムの工夫を行う必要がある。注意機構では位置符号における単語の位置関係の学習が行われる。
- 画像処理:入力画像サイズが可変の場合でも、拡大・縮小による特徴量操作が容易であるため、アルゴリズム上の配慮は少ない。また、どのぐらいのスケールで拡大・縮小処理を行ったか、実世界の座標系の情報を学習に付与することは少ない。
局所的重要度の違い
- 自然言語処理:ある文字に着目した際、その文字付近の単語が影響が大きいとは限らない。係り受けや文法、文脈の関係から、広い範囲を参照して特徴抽出を行うことが重要である。注意機構はこれら重要度を重み付けできる点でブレークポイントであった
- 画像処理:ある画素に着目した際、画像では空間的情報が画像の画素の距離として表現されるため、その画素付近の影響を大きく受けることが通例である。そのため、畳み込み演算のような局所性に着目したアルゴリズムが有効である。
入力値の配列順序の意味合いの違い
- 自然言語処理:文法、係り受け、並び順、文脈等、入力値の配列順序が変化すると、それらが持つ意味合いは変化する。そのため、配列順序の持つ意味合いを特徴抽出する工夫が必要である。
- 画像処理:空間的な配列順序はタスクによっては重要ではない場合がある。具体的には、画像内の左右関係は反転しても成立する場面があるため、左右反転のデータ拡張が行われる。
同一ベクトル内の各要素の活用すべきタイミングの違い
- 自然言語処理:画像内の各要素は時間的特徴の相違があるため、平等に演算する・されることが望ましくない場合がある。RNNやLSTMでは時間的な行列積の回数が距離に相当し、平等には扱われない。Transformerでは着目要素より時間的後方のデータを活用することは望ましくないため、マスク処理を加える
- 画像処理:画像内の各要素は時間的特徴の相違がなく、同時的に処理することができる
固有表現の取り扱いの違い
- 自然言語処理:ソフトウェアのクラスの継承での抽象・具体が成立している。自然言語上の単語の具体的特徴は、それらの抽象的特徴を有していない。「佐藤」と「鈴木」は「日本人の姓」としての抽象的特徴を単語そのものの中には有していない
- 画像処理:ソフトウェアのクラスの継承での抽象・具体が成立していない。画像上のオブジェクトの具体的特徴は、それらの抽象的特徴を有している。AさんとBさんは「人物」としての抽象的特徴を画像内に有している
所感
- 画像処理と比較して、自然言語処理は前提の制約条件が少なく、設計項目が多い。画像処理では撮像された画像という、限定された特徴空間で設計を行っていた。自然言語処理では、文章の意味を構成するパラメータの多さとその自由度が高く、これらを統合的に機械処理することは難しいタスクであることを理解した
- 一方で、自然言語処理では、画像のような行列入力ではなく、1次元ベクトルを入力とするため、適用できるタスクの範囲が広く、エンジニアとしてのCanを広げるうえでは、非常に重要な技術領域である
- 今後は深層学習の発展により、マルチモーダルが進展し、自然言語処理と画像処理の融合が進んでいくと考えられる。その上で、自然言語処理を学ぶことは画像処理のエンジニアとしてのスキルを伸ばすことも期待することができる。
理解内容詳細
1章 自然言語処理の概要
コーパスの目的は主に3つ
- 言語の構造や意味への重要課題への検討を深める
- 自然言語処理の自動解析手法の確立
- 自動解析手法の評価
コーパスは画像データと対応付くと理解した。
信号処理の入力データに相当するものである。
目的の3つも画像処理分野と同様と言える。
注釈(アノテーション)
- 品詞などが付与されている
- アノテーションが無いデータは生コーパスやラベルなしコーパス
- アノテーションには詳細な仕様が求められる
画像データ同様、コーパスに対してもアノテーションが付与される。
画像と同様に、解きたいタスクに応じてアノテーションの仕様を設計する必要性がある。
画像では画像単位、インスタンス単位、ピクセル単位でのアノテーションがあるが、
コーパスに対しては品詞単位でアノテーションを行うことから、インスタンス単位と捉えるのが良さそう。
コーパスへの統計的な分析
- 単語の種別
- 機能語:文法的な役割
- 内容語:意味内容を表す
- 出現頻度への着目
- TF-IDF
- あるコーパスに偏って出現する単語に着目
- ジップの法則
- 単語の出現頻度が出現順位に反比例する
- テキスト中ではごく少数の単語が頻繁に用いられる
内容語は画像の前景、機能語は画像の背景と考えるのが良さそう。
あるインスタンスを接合している背景情報が機能後であり、内容ごとの相互関係を示している。
出現頻度への着目は、あるデータセットによく現れる前景と考えるのが良さそう。
人間がある目的の下で収集した画像データセットでは、任意のオブジェクトが多数含まれる。
この状況においては、自然言語処理と画像処理にては同様の事象が生じる。
自然言語処理の難しさ
- 求められる知識:文字、単語、文、文法
- 形態素解析:意味を持つ最小の言語単位を解析
- 日本語は分かち書きされていない
- 構文解析:文の構造を解析すること
- 意味解析:文の意味を解析すること
画像では画像化されたデータのドメイン情報を理解すればよかったが、
自然言語処理では文字・単語・文・文法に対する理解および処理を段階的に行う必要性がある。
一方、文字から意味のある特徴に落とし込むプロセスは、光から画素センサを用いて画像化されるプロセスと捉えるのも良さそう。
形態素が意味のある最小言語単位という定義においては、
「文字は画素」、「形態素は前景またはまとまりのある背景」に相当すると考えた。
英語と日本語の違いは分かち書きの有無にある。
画像ではエッジという形で分かちの境界は求められるものの、曖昧性が残るため、これらの中間的立ち位置にあると考える。
構文解析は画像全体の構造理解と捉えた。
前景と背景の位置関係において、どのような係り受け状態にあるのかを解析する。
これらは隣接・大小・遠近関係で求められる。
意味解析は画像全体のコンテキスト理解と捉えた。
ある画像が何を表しているかを抽出する処理である。
2章 自然言語処理のための機械学習の基礎
特徴量表現
- 各文を実数値ベクトル表現を行う必要がある
- 単純なやり方は各文の特徴をベクトルの次元に対応させる
- 特徴量エンジニアリング
- 機械学習の性能に影響を与える特徴量を試行錯誤して求める
- 重みベクトル
- 入力のある特徴に対応し、その特徴の存在有無を示唆する
- 特徴ベクトルと重みベクトルの内積で確率を見積もる
画像処理では既にCMOSセンサにて量子化された画素を取り扱うのに対し、
各文を信号処理可能なベクトル表現に変換する特徴量エンジニアリングが求められる。
3章 単語ベクトル表現
RGBの画素値を扱うCVや音声波形を扱う音声情報処理とは異なり、自然言語処理では文字や単語などの離散的な「記号」として扱う。
離散的な記号である単語xを何らかの方法によってd次元のベクトルxに変換することを考えたい
単語の元性質や意味をよく反映するベクトル表現を獲得することは重要である。
本書では画像処理と自然言語処理との違いは、「離散的な記号」と定義されていた。
画像処理ではフィルタリングにて何らかの特徴空間・特徴ベクトルに変換が行われる。
一方で、CMOSセンサにて画像化された画素値そのものが既に特徴として、ベクトル化・行列化されているとも言える。
自然言語処理では、文字そのものは独立した記号であり、その単語や文脈の上で特徴として捉えることができる。
文字自体が特徴量を表すことはなく、何らかの特徴に変換する必要性がある。
画素と文字が同等の立ち位置にあると考えていたが、文字そのものに特徴性がないことを考慮すると、
文字は信号処理可能な状態になる前のデータと考えるのが良さそうだ。
- 素性関数
- 単語がある条件を満たすかを0or1で表現、そのまま特徴とすると活用形や類義語が異なる
- 見出し語
- 単語の基本形(give, gave, giving, givenの見出し語はgive)
- 文脈を考慮することが重要、foundはfind過去系とfound現在形
- 語幹
- 単語の中で活用があっても変化しない部分
- ステミング:語幹を抽出する処理
- 語彙資源
- 単語の意味や活用などの処理をコンピュータ処理しやすい形式で記述
- 格フレーム:述語が取る項を記述
- 深層格:意味上の関係
- 表層格:構文上の関係、日本語では格助詞など
画像内のオブジェクトをどの抽象表現で特徴獲得する話であるかと近しいと考えた。
例えば、画像内に「人間」のオブジェクトが写っていると仮定する。
この中で、「歩いている人間」、「立ち止まっている人間」、「寝ている人間」は同様に「人間」というオブジェクトの基本系を見出す必要性がある。
これは見出し語や語幹の抽出に通ずる考え方と捉えた。
これらは背景画像との文脈等から、認識アルゴリズムを設計する必要性がある。
画像処理ではこれらを特徴量設計や機械による自動設計に任せている。
自然言語ではある程度ルールが明示的に分かる部分があり、このあたりの知識を事前に与えることで解決することができそうだ。
そのため、語彙資源による知識の蓄積や、文脈理解のための深層格と表層格の定義が行われている。
画像では語彙資源は、「人というオブジェクトの見え方の活用系」、格フレームは前景と背景の情報と考えるのが良さそうだ。
- 分布仮説
- 人手による素性関数の設計を不要にする
- Firth「単語の連れからその単語について知るだろう」
- 頻出する文脈単語の影響を受けるので、自己相互情報量の活用
「単語の連れからその単語について知るだろう」は「画像のオブジェクトを背景情報から把握する」に近しいと考えた。
シベリアンハスキーをAIで認識を行った結果、判定根拠を背景にある雪に着目していた話が有名である。
前景情報を背景情報の文脈から判定することは、同様の考えである。
自然言語処理ではある文章においては同様の単語表現等が使われることが多くなる。
これは自己相互情報量で解決を行っている。
画像処理においても、あるデータセットの作成過程においては、特徴量的に近い前景・背景情報が多く集まることがしばしばある。
こちらは、画像認識では前景情報に着目するよう、特徴量設計を工夫することで、解決する試みと考える。
Word2Vec
- 分布仮説による単語ベクトルの構築をNWでモデル化
- 様々なタスクに応用可能な単語ベクトルの生成が目的
- 単語埋込み:単語をベクトルで表現したもの
- CBow:単語の周辺単語・文脈から、特定の単語を予測する
- Skip-Gram:中心単語から周辺単語を予測する
- 近年のNWベースのモデルでは、単語埋め込み層が組み込まれており、タスクに特化した単語埋込
単語埋込みの課題をNWベースの手法で解く内容である。
画像処理では画素という特徴量化されたデータが存在するが、自然言語処理では記号をNWで単語埋込みする内容であり、画像処理では存在しない前工程と捉えることとする。
CBow・Skip-Gramの考え方は、画像処理で言うinpaintに近いと考えた。
感覚的にはCBowの方が良い予測精度の出力が得られると考えた。
- CBow:ある画素に対して、その周辺画素からinpaintする
- Skip-Gram:ある画素から、周辺画素をinpaintする
近年のend-to-endで学習を行えるNW環境においては、タスクに特化した単語埋込みが有利なのは想像が容易い。
画像認識においても、各タスクごとにNWを分けるのではなく、統合してend-to-end学習を行うほうが、性能改善を期待することができる。
単語よりも小さな単位の利用
- 出現頻度がしきい値以上の単語だけを用いる場合
- 語彙に収録されていない単語は未知語
- サブワードを用いて、単語ベクトルを学習
画像認識における、オブジェクトをどこまで学習の対象とするのかに寄せて、考えることとした。
「人間」のオブジェクトの認識を考えるうえで、あらゆる「人間」を覚え込ませるのは大変である。
そこで、「人間」という抽象表現に共通する情報をベクトル化して学習させることで、未知の「人間」の認識にも対応をさせる。
単語ベクトル表現の課題と限界
- 類似度と関連度の混在
- 類似度:意味的に類似したもの
- 関連度:文脈に現れるトピックが類似したもの
- 反義語、正反対の意味を持つ反義語同士がにた単語ベクトルを持ってしまう
- 単語の意味の曖昧性により、文脈によって変化する語義
- バイアス
- 報告バイアス:新規やレアなどの情報量の多い事象に言及
- 選択バイアス:サンプリング時のバイアス
自然言語処理では文脈を活用するうえでは、類似と関連を見分けることは、非常に重要である。
画像処理のデータセット構築時にも発生する事象と考えた。
例えば、画像認識にて学習型のアルゴリズムを用いる際は、類似度と関連度は自然に分離されることを期待している。
バイアスに関しても画像処理のデータセットでは同様に発生する。
ただし、報告バイアスにおいては、画像処理では現実世界での発生頻度がそのまま画像データセットのバイアスに影響することが多く、新規やレアなどの情報量が多い事象はデータセット中では少数となることが多い。
選択バイアスは自然言語処理と画像処理にて同様と考えた。
4章 系列に対するニューラルネットワーク
- 構成性の原理
- 文の意味は構成要素の意味と合成要素の合成手続きによって決定される
- 単純な合成では可変長を扱いにくく、位置関係を直接的に反映してしまう
画像全体の意味するところは、前景そのものの意味と、前景の組み合わせの合成手続きによって、決定されるということと相当する。
勿論、前景同士だけではなく、背景との組み合わせのその合成手続きの1種であると考えられる。
可変長の取扱いに関しては、自然言語特有のものと考える。
画像処理では、拡大縮小処理にて、特徴量圧縮のコントロールを行うことができるが、自然言語ではそれに相当するものが存在しないと考えた。
- RNN
- 系列データの先頭から末尾までを再帰的に入力ベクトルの合成を繰り返す
- 通時的誤差伝搬:時間方向に誤差逆伝搬
- 行列積の回数が距離に相当し、影響度合いが変化する
- LSTM (Long shot term memory)
- 勾配消失・爆発問題をメモリセルやゲート機構で解消
- 直前のメモリセルの内容を受け継ぐかを学習
- CNN
- 畳み込みの幅を設定して、演算を行う
- プーリングを用いて入力分を固定長に変換する
このあたりは画像処理と同様の考え方である。
CNNでは空間的な方向で、RNN・LSTMでは時間的な方向で特徴抽出が行われる。
CNNの空間的次元での処理では、同様の特徴的重要度を持つ値が平等に畳み込み演算される。
それに対して、RNNでは時間的な行列積の回数が距離に相当するため、同様の特徴的重要度を持つ値が平等に扱われない。
そのため。逆方向RNNやLSTMの活用が検討される。
また、画像処理においても動画像を扱う際は時系列的処理が行われるが、
こちらは自然言語処理とは異なり、実世界の時間的方向がそのまま動画データに反映されているため、時間的後段の入力値がより重要度が高くなる傾向にあり、ここは分けて理解を行う。
5章 言語モデル・系列変換モデル
- 言語モデル;自然言語の単語や文章が生成される確率をモデル化したもの
ここはきちんと定義を理解しておきたい。
近年話題の大規模言語モデルは、あくまで単語や文章が生成される確率をNWを用いて、モデル化されたものと把握をする。
- 単語列の生成確率は単語の同時確率で表されれる
- 式変形を行えば、条件付き確率で表される
- 文として完結したいことを表す場合は、BOSとEOSを活用する、これらも条件付き確率で推定する
単語と単語の組み合わせが現れる確率を同時確率、条件付き確率の積で表していることを理解した。
分布仮説からも、ある単語に関しては、その他単語について知ることができるのであろう。
画像処理と異なる点としては、BOSとEOSの存在である。
画像では、「画像サイズ」にて明示的に指定されており、これらがモデルによって推定されることは少ない。
ただし、言語処理では可変長の出力を扱うために、始点と終点を含めてモデル化する必要がある。
このことからも、言語モデルを扱う絵では始点と終点との確率的な組み合わせは言語モデルを扱う上で、考慮する必要がありそうだ。(体言止めなどはどのように扱われるのであろう)
- 言語モデルでテキストの自然さを判定
- 言語モデルによるテキストの生成
- 言語モデルの生成確率に基づき、文章の先頭から1単語ずつ単語をサンプリングする処理を文章が完成するまで繰り返す探索問題となる
- 貪欲法:条件付き確率が最大となる単語を選択する、ただし全体の確率が最大となるとは限らない
- ビームサーチ:累積確率が高い候補を保持しながら探索を行う
言語モデルの利用例としては、2つ挙げられている。
ここでは、「2. 言語モデルによるテキストの生成」に着目する。
言語モデルでは、文章の時系列方向に、単語の生成を繰り返していく必要がある。
それが、直前の単語に着目するのか、累積の結果に着目するのかで、方法は分かれる。
このあたりは画像処理では考慮しなくて良かった点である、画像処理では空間的な方向は同時的に活用することが容易であるからである。
やはり空間的方向と時間的方向の違いはしっかり抑えるべきだと考えた。
nグラム言語モデル
- 単語の分布予測が過去のn-1単語のみに依存すると仮定
- n数が増えると、保持しておくべき情報が急速に増える
- 生成確率の累積になるため、ゼロ頻度問題
NWベースの言語モデルが流行る前に、主流であったモデルである。
n数が増えると処理が膨大化する課題は、画像処理での辞書型等のアルゴリズムに近しいと考えた。
既存データを保持して、それにマッチする値を探索する手法では、n数の増加が同様に課題となる。
ニューラル言語モデル
- 入力される単語を一旦ベクトルに変換し、ワンホットベクトルを入力として処理する
- 未知の文脈も類似の単語埋込みとなるように学習され、ゼロ頻度問題が起きない
- 順伝搬型:入力を単語埋め込みを行い、flatten化して推測を行う
画像処理と同様に、入力ベクトルに対して、出力ベクトルをEnd-to-endにて得る手法となる。
効果も画像処理と同様で、未知語・未知物体への対処は、学習に期待を行う。
画像処理と異なる点としては、入力のベクトル化にある。
画像処理では画素がベクトルとして入力されるが、自然言語では離散的な記号である「文字」をベクトル化する必要がある。
ここでは、各単語に対応するワンホットベクトルを活用する例が挙げられている。
- 系列変換モデル
- 与えられた文(系列)を別の文(系列)へ変換するモデル
- エンコーダ:NWによる単語埋込みと合成を行い、特徴ベクトル作成
- デコーダ:特徴ベクトルを元に、文章を生成する
- 注意機構:各参照ベクトルの重要度を算出し、内積計算により重要度を適用
- 単語の生成処理:EOSが予測されるまで、繰り返す
画像処理における、img2imgの変換に概念としては近しいが、行っていることは少々異なる。
エンコーダはデコーダに向けた特徴ベクトルを抽出する考えは同様だが、自然言語処理では「単語埋込み」と「合成」という役割となる。エンコーダでは、特徴抽出に必要なベクトル列生成のためのNWであると考えることができる。
画像処理ではしばしば、演算量の兼ね合いから、空間的サイズを縮小し、特徴量へと抽出することに活用されることが多い。
デコーダは画像処理と同様である。特徴空間での特徴量をもとに、何らかの出力データを得ることを目的とする。
注意機構(Attention)も同様である。
画像処理では、空間的関係性の重要度を抽出するためであるが、自然言語処理では時間的関係性の重要度を抽出するためである。
画像処理では一般的には、あるピクセルに影響を与えるのはその局所領域であることが多い。
一方、自然言語処理では文脈や文章構成によっては、必ずしも局所性が成り立つとは限らない。
そのため、注意機構は自然言語処理ではより重要であると想定される。
未知語への対応
- DNNでは未知語の影響を受ける
- 文字単位で特殊トークンに置き換える
- 部分単語で処理する
未知のタスクにおいては、自然言語処理でも画像処理でも、同様に性能の低下が予想される。
真っ先に上がる解決策は、データセットの拡充であるが、必ずしもこの戦略がコスト面等で適用できるとは限らない。
その上で、自然言語処理ではに置き換えるなどの「未知語を未知語として扱う」手法が挙げられている。
感覚的には、画像処理にて未知の領域を塗りつぶしたりすることで、特徴量を除去することに近い。
手法としてはRandom Erasingなどのデータ拡張手法が近しいが、目的が汎化性能向上であるため、少し実態は異なると考える。
部分単語処理に関しては、前景部分をそのサブ前景領域に分割するイメージであるが、明示的に行われる例はあまり把握はしていない。
6章 Transformer
- 自己注意機構
- 情報の受け渡し元(参照先として利用する特徴ベクトルのリスト)と受け渡し先(再構築したいベクトル)が同じ
- Transformerの構成
- QKV注意機構
- キー・バリュー方式のDBに、クエリで問い合わせ
- DB内のキューに対して、クエリとの類似度を計算し、それに応じた重みでバリューのベクトルを配合
- マルチヘッド注意機構
- 単数の注意機構では、softmax関数が一つの要素に着目するため、複数の観点で情報を取り出すの困難
- 複数の注意機構が別々の位置から情報を取得して、混ぜ合わせることを期待する
- フィードフォワード層
- 2層の順伝搬型のNWで、中間層が入出力層のベクトルの次元よりも大きい
- 位置符号
- 入力系列の先頭から何番目の入力化をベクトル表現
- 注意機構の計算そのものは入力単語の順番の入れ替えに対して、結果が不変である
- 自然言語処理では単語の出現順位や順序の情報は重要であるため、モデルに教える役割
- 位置符号により、単語の絶対位置を学習しているため、学習時に存在しなかった系列長のデータはうまく処理できない、相対的な位置を学習することで軽減が可能
- 残差結合
- 勾配消失問題を防ぐ
- 層正規化
- 学習中に過剰に値が大きくならないように、ベクトルの各要素を正規化する
自然言語処理における自己注意機構は、画像処理のそれと比較して、大きな差分はないと考える。
自然言語処理では時間的関係性、画像処理では空間的関係性を注意機構にて、重要度の重み付けを行っている。
画像処理と異なる点としては、位置符号における単語の位置関係の学習による影響であると考える。
画像処理ではおおよそ画像サイズは固定化、または拡大縮小処理にて特徴量の空間的圧縮が行われる。
わざわざ、どのぐらいのスケールで拡大・縮小処理を行ったか、実世界の座標系の情報を学習に付与することは少ない。
一方、自然言語処理では可変長であることと、局所性に留まらない特徴量の関係より、位置の情報が重要である。
- 学習時の工夫
- マスク処理:ある位置の単語を予測する際に、後方の単語情報を使わないように。GPU処理を考慮すると、行列サイズ固定で不要情報は保持したまま処理
- 学習率のウォームアップ:学習の序盤と終盤の学習率は小さく、中盤は大きく
- ラベルスムージング:正解ラベルを緩和し、モデルの過適合を防ぐ
- モデル平均化:複数のモデルの平均を取り、それを最終予測結果とする
マスク処理は自然言語処理特有の方法である。
画像処理では、画像内での時間的特徴の相違はなく、同時に処理することが望まれる。
一方、自然言語処理では同時に予測に使用することが適切でない場合があるため、マスク処理を施す。
GPUの並列計算処理の特性を活かすため、部分処理するのではなくマスク処理にて計算を無為化することがポイントである。
画像処理にても、同一画像内で取り扱いたくない情報がある際は、このようにその時折に応じてマスク処理にて対応することが有効な場面があるかもしれない。
学習率のウォームアップは画像処理にても同様に有効な手法である。
NWの反復学習において、どの程度のエポック数でウォームアップを行うかは、自然言語処理と画像処理の違いよりは、学習に用いるデータセットでのパラメータの学習効率に依存すると考えている。
ラベルスムージングは画像認識におけるソフトラベルを用いた学習と同様である。
画像認識にては蒸留などのモデル間での知識の移転にて用いられる印象であるが、自然言語処理ではどのようなシチュエーションで使われるのかは確認をしておきたい。
モデル平均化はアンサンブル学習の平均化と同様である。
本書では学習のチェックポイント毎のモデルの平均化を用いる手法が紹介されている。
アンサンブルでは複数のモデルを推論するため、推論演算量に対するコストが発生する。これが自然言語処理ではどの程度の負担度のある処理であるのかは把握しておきたい。
また、出力を行った系列はまた離散的な記号となっているため、そのままは平均化ができないはずである。具体的に、どのタイミングにて出力ベクトルの平均化を行うか、それに対して得られる出力のイメージは掴んでおきたい。
7章 事前学習済モデルと転移学習
- 事前学習済モデルの背景
- 文脈化された単語埋め込みの学習:NW学習の副産物として、文脈における単語の表現を暗黙的に獲得
- 文の埋込み表現の学習:文単位の埋込表現、隣接文の生成や識別
- 事前学習:埋め込み表現の学習
- ファインチューニング:タスクにおける学習
- 転移学習:あるタスクで学習されたモデルを関連する別タスクに適用
画像認識にても、NWで得られた中間出力は、特徴量抽出の観点で副次的な産物となっている。
例えば、ImageNetの大量の画像で学習されたCNNを特徴抽出器として活用し、得られた特徴ベクトルをSVMへの入力として活用する手法が存在した。
また、事前学習・ファインチューニング・転移学習は画像認識と同様の活用が見られる。
画像認識では「埋め込み表現」・「タスク」のような分類では無いが、特徴抽出器の観点としては同様である。
- GPT:デコーダの事前学習を行う大規模言語モデル
- Transformerのデコーダを事前学習
- 事前学習:先行する文脈を参照しながら、それに続く単語を予測するタスク
- 位置符号化ではなく、各位置をベクトルで表現する位置埋込み、位置の性質を捉えられるように
- ファインチューニング:最終層単語埋込とタスクに応じた全結合層のパラメータで条件付き確率を計算し、タスクに対する負の対数尤度を最小化
- プロンプト
- 大規模テキストコーパスから、知識を引き出すアイデア
- タスクを自然言語で説明することで、性能を向上
- zero-shot:タスクの指示のみを与える
- few-shot:タスクの指示と数十件の事例を与える、ファインチューニング残すと削減
- 実数値ベクトルやモデル内部の追加パラメータとして、プロンプトを与えることも
近年話題のGPTである。
デコーダonlyで事前学習が行われているのがポイントである。
画像認識では、入力画像をそのままの次元で扱うと、演算量が膨大となるために、エンコードされることが大半である。
そのため、エンコーダが取り扱われることがほとんどである。
そのため、デコーダonlyの概念を理解することには少々苦しんだ。
プロンプトについては、自然言語処理の基礎から考えると、与える自然言語の順序は重要である。
質疑応答を想定しても良いし、人間が書きかけていた文章の途中を与えるのも良さそうだが、タスクの事前説明は重要である。
GPTの制御を操作するための実数値ベクトルや追加パラメータに関しては、動作原理・学習元のコーパスを考慮しながら、有効なパラメータを探る必要があるだろう。
- BERT:エンコーダの事前学習を行う大規模言語モデル
- Transformerのエンコーダを事前学習
- 事前学習
- 単語穴埋め:文中で任意の位置の単語をマスクし、そのマスクされた単語を予測するタスク、雑音除去自己符号化の1種
- 次分予測:入力された2つのテキストが、連続していたものかを推定する、ただし性能向上には寄与しない場合も
- ファインチューニング:NWの層を積み重ねて、BERT内部のパラメータ含めて、全体を学習する
- 単語や文の埋込表現の抽出
- 事前学習済モデルは、汎用的なエンコーダとしても利用できる
- BERTScore:教師なし文間類似度推定手法、符号化したベクトル間のコサイン類似度
BERTはエンコーダを事前学習したものであり、こちらの方が画像認識の観点からは親しみやすい。
事前学習を行い、NWを特徴抽出器として活用する方法においては、エンコーダの事前学習の方が馴染みが深い。
単語穴埋めによる事前学習での雑音除去自己符号化のアプローチは、画像処理においてもinpaintの学習方法としても馴染みが深い。
ファインチューニングの方法に関しても、CNNベースの画像認識と同様に、NW後段層を置き換える手法であり、同様と言える。
学習済みのNWを特徴抽出器として活用し、類似度計算等に活用することも、画像認識と同様と言える。
- BART・T5:エンコーダ・デコーダの事前学習を行う大規模言語モデル
- 入力の符号化を担うエンコーダを備えたことで、入力分に強く条件付けられた言語生成タスクに向く
- 入力テキストの続きを予測するタスクでは、純粋な言語モデルのほうが優れる傾向
- 事前学習:文順序をシャッフルしたうえで、各文中の単語の一部をマスクしたものを入力、元の文を復元するように学習
- ファインチューニング:タスクに応じて追加学習
エンコーダ・デコーダをすべて学習対象にいれることは、タスクごとの条件や制約のもとで、優劣があることがわかる。
画像認識では入力画素から、画像単位・領域単位・ピクセル単位の分類を行うモデルを扱っていた観点から、自然言語処理のタスクに応じたNW設計の使い分けが求められることがわかる。
単純にEnd-to-endで学習を行えば良いものではなく、自然言語処理と一括りにせず、NW設計を考慮する必要性がある。
- 事前学習済モデルと知識蒸留
- パラメータ削減によるモデルの小規模化
- 知識蒸留による大規模なモデルから小さなモデルの抽出
この辺りは画像認識と同様である。
モデルを小規模化するうえで、演算規模の大きい箇所の計算量削減は検討される。
画像認識では取り扱う特徴マップの画像サイズが非常に大きな影響を与えるため、これらのサイズ縮小が検討される。
自然言語処理では、単語埋込行列の行列の小規模化などが挙げられる。
知識蒸留は画像認識と同様に、ハードラベルからソフトラベルに置き換えた学習が検討される。
- 事前学習済モデル利用上の注意点
- 入力テキストに対する敏感性:プロンプトによりモデルの挙動が大きく変化する、プロンプトエンジニアリングの重要性
- 嘘の生成:入力から逸脱して生成された情報(ハルシネーション、幻覚)
- 乱数シードの影響:非凸最適化の深層学習全般に当てはまる、乱数シードによる性能の変動
学習型NWでタスクを解く以上、これらの問題は画像認識にても同様に発生する。
画像認識においても、入力に対する敏感性においては、Adversarial attackなどが知られている。
画像を少し揺らしただけでも、出力値は大きく変化する。
これらを防ぐために、画像処理では前処理を行ったりするパターンもある。
自然言語処理では、画像と比較して入力の自由度が高いため、プロンプトエンジニアリングのように、入力値に対する設計概念が生まれてくると考えた。
ハルシネーションの課題も、学習済みデータから経験則的・確率的に出力を出し、それが真の値ではないということは、画像認識においても同様と考えてみることにした。
例えば、ノイズ復元や超解像などの不良設定問題においては、真となるパターンが複数想定される中で、何らかの値を確率的に出力する必要がある。
この過程において、出力値が本当なのか・嘘なのかを見分けることは困難である。
乱数シードによる影響は、画像認識にても同様の課題である。
解決策も同様に、複数の乱数シードからモデルの性能を評価することになる。
8章 系列ラベリング
- 系列:単語列や文字列など、要素が1次元に並べられたもの
- 系列ラベリング:系列として表現される入力に対して、ラベル列を推定する
- 品詞タグ付け:単語列に対して、品詞列を求めるタスク
- チャンキング:単語列や品詞列等から、名詞句や動詞句などの塊(チャンク)を推定する
- 固有表現認識:固有表現を抽出するタスク
- 自然言語理解:ユーザの意図や指示内容を理解すること
- 情報抽出・知識獲得:自然言語の文から情報や知識を自動的に獲得する
- 点予想による系列ラベリング:各ラベルは互いに独立で推定できると仮定、位置にラベルを独立予測
- 線形連鎖に基づく条件付き確率場:線形連鎖にて系列全体のスコアを各位置の局所的なスコアの和と定義
画像認識における、セマンティックな認識タスクであると考えた。
自然言語においては、その単語の文法上での役割が重要であるため、それらを認識する必要性がある。
画像認識においては、前景や背景、前景の中でもオブジェクトの何を意味するかの認識する必要はある。
固有表現認識に関しては、自然言語処理のほうがより難易度の高いタスクであると考えた。
画像認識においても、例えば人物の物体認識をする上においては、Aさん・Bさんの固有表現を除いたうえで、認識を行う必要性がある。
ただし、画像上のAさん・Bさんは「人物」としての抽象表現は持っているため、Aさん・Bさんがそれらの具体表現であることを認識することは容易である
画像認識においては、ソフトウェアのクラスの継承での抽象・具体が成立していると考える。
一方で、自然言語処理ではこれが工夫なしでは成立しない。「佐藤」と「鈴木」は離散的な記号上では全く異なるものである一方で、「日本人の姓」という抽象表現は同一である。
これらを自然的に理解させることは難しい。(特定の文字列のあとに、「さん」や「様」が存在することを分布仮説的に把握することができれば、可能かもしれないが)
そのため、固有表現認識に関しては、画像認識よりも一段の工夫が必要であると考えた。
9章 構文解析
- 自然言語では、単語を並べて複雑な意味を表現する、並べ方には一定の規則がある
- 構文解析:自然言語の文の内部構造である構文構造を計算する
- 句構造解析:部分単語列のまとまりの階層関係を木構造で表現
- 依存構造:単語間の依存関係を有向グラフで表現
- 現在では深層学習を用いた構文解析手法、事前学習済み言語モデルで単語埋め込みを求めそれを利用して生成規則やシフト・還元のスコア、依存構造のスコアを計算する
- 英語や日本語ではツリーバングが整備され、構文解析は実用レベルであるが、成果の多くの言語では整備されておらず、発展途上
画像認識においても、画素の配置順序は重要であるが、それらは空間的に表現されるため、並べ方的な制約は少ない。
例えば、画像内の「家」の右側に「人物」が存在する場合において、一般物体認識ではその配置順序はそこまで重要ではない。
そのため、左右反転のデータ拡張が実施される。
一方、自然言語においてはこれらは配置順序に関しては、入れ替えによる意味的変化が生じる。
そのため、これら配置順序を考慮した学習を行う必要性がある。
また、これら構造に関してはNWで自然的に学習させることは困難出ることが想定される。
そのため、ツリーバンクを構築し、「構造に対するデータとアノテーション」によるデータセット構築が重要である。
10章 意味解析
- 意味:「文章をから何らかの情報が脳内に生じること」と定義するが、直接的に観察することはできない
- 意味の近さ
- 文字列としてみたときの近さとは必ずしも一致しない
- 意味の近さを計算するためのデータ構造やアルゴリズムが必要
- 同じ単語を用いても、並べ方によって、意味の近い・遠いがある
- 構成的意味論:構成性の原理に基づいて作られる意味に関する理論や技術
- 構成性の原理:文の意味はその「構成要素の意味」と「合成手続き」によって決定
- 語彙的意味論:単語が元々持っている意味に関する理論や技術
- 知らない言語の文は理解できず、単語はそれぞれ特定の文に依存しない意味を持つ
- テキスト間含意関係認識:意味の近さを直接ターゲットとする自然言語処理タスク
- 2つの文章t, hにて、tが真のとき、hが真であると言えるか
- ニューラルネットワークによる意味解析:含有関係を判定するために、文埋め込みを学習
- 述語項構造解析
- 述語項構造:文の意味を単語間の有向グラフとして表す
- セマンティックパーシング:自然言語の文を機械処理が可能な表現(機械可読表現)に変換
意味に関しては、画像認識と同様である。
画素のピクセル配列やオブジェクトの配列としての近さと、画像全体が持つ意味に関しては、異なることは多々ある。
ただし、空間的表現においてはその見た目での変動幅はそこまで大きくないため、画像から何らかのアルゴリズムを用いて特徴量を抽出し、それらから意味を推定することは、自然言語程複雑ではないと考える。
画像全体としては、構成的意味論で捉えるほうがしっくりとくる。
画素によって構成されたオブジェクトと、その構成によって、画像全体としての意味が導出されてくる。
一方、ピクセル単体や局所的な特徴量では意味をもたせることは困難であるため。語彙的意味論のような捉え方は用いない事が多い。
また、述語項構文解析のように、画像内のオブジェクトの構造解析をグラフ的に行うことも比較的に少ない。
特徴量マッチングのような、似たようなものをペアリングすることは多々あるが、主従関係を解析するような場面はあまりない。
- その他
- モダリティ:命題に対する話し手の判断・評価・可能性、〇〇のようだ
- 語義曖昧性解消:単語が持つ複数の意味の候補から一つを選ぶ
- エンティティリンギング:単語をデータベースや知識グラフとつなぐ
- 談話解析・文脈解析:複数の文から構成される意味を紐解く
- ゼロ代名詞:省略された項
- 共参照解析:代名詞が指すものや異なる名詞が同一のものを指していることを認識
- 語用論:自然言語が使われる場面に応じて生じる意味に関する学問
- 比喩認識、比喩理解、アイロニー(字義的な意味とは反対の意味)
語義曖昧性のような課題は、画像認識でも同様に発生する。
例えば、赤い三角形のオブジェクトは、道路上にあれば三角コーンかもしれないし、おもちゃ売り場にあるなら積み木かもしれない。
これらは、画像認識ではその他オブジェクトや背景情報、データセットの操作によって、自然的に認識能力を獲得することを期待する。
自然言語処理では、これらを解くためのデータセットや知識グラフを活用することで、解決を図ることができる。
ゼロ代名詞のように、省略された対象を考慮する技術は、画像認識ではあまり見かけない。
画像を撮像する際に、人間が明示的・暗示的に特定の対象物を画像内から省略することのメリットが見当たらない。
画像認識ではカメラが自然界の現象をそのまま捉えている側面からも、省略された何かを考慮することは少ないと考えた。
語用論においては、画像認識でのドメイン間差分と照らし合わせると、面白い考察ができるのではと考えた。
例えば、自然画像データセットが存在すると仮定する。これに対して、CGデータを追加するとすると、これらは自然画像の比喩表現の一種と考えてみることにした。
この場面においては、CG画像は自然画像を比喩しているものと捉えることができる。(シマウマのCG画像は、暗示的に自然画像のシマウマを表現しようとしている)
一方で、CGデータのみで構成される場面においては、CGデータは直喩表現となる。
少し拡大解釈している気がするが。
11章 応用タスク・まとめ
- 機械翻訳
- 中間言語方式:言語によらない抽象表現を取り出す
- 質問応答
- 知識ベース:質問文を論理式、記述言語に変換し、知識グラフ等の知識ベースに問い合わせ、回答を得る
- 情報検索:クエリに対して、スコアが高いものを返す
- 対話
- タスク指向対話:分類やストットフィリング、応答生成などのサブタスクを進めることで実現
- チャットボット:応答を生成する規則を設計する方法と、大量の対話実例を収集したコーパスに基づく手法
画像認識同様、タスクに応じた特徴抽出器・機械学習の設計が必要になる。
中間言語方式において、多少のドメイン間ギャップはあるとはいえ、言語のような大きな記号的差分はなく、万国共通で画像は画像である。
そのため、それら抽象表現を獲得することは大きくは意識しない。
ファイクトイド型の知識応答は、辞書型のアルゴリズムに近しい。
何らかのデータベースを蓄積しておき、それらにクエリを投げることで、出力の獲得を狙う。
そのための特徴量として、言語モデルを特徴抽出器として活用する。
- 自然言語の過去・現在
- 統計的手法や機械学習の導入で、実用レベルに
- 深層学習では原言語から目的言語分までをend-to-endで構成したことがポイント
- 従来は特徴量エンジニアリングが重要で、複数の解析手法を有機的に統合することが重要
- 深層学習では、NW構造をタスクに応じて工夫するようになった
- 一方で、特徴量抽出を担う単号埋め込みの部分には目立った変化がない
- 画像とのマルチモーダルが進む
- 個々のパラメータやニューロンなどのミクロの始点からのモデルの動作理解が困難
自然言語の過去と未来は、画像処理分野のそれと通ずるところがある。
画像認識においても、深層学習の導入でEnd-to-endで一気通貫に目的タスクを解けるようになったことがブレイクスルーであった。
以前は、あらゆる画像前処理による特徴量エンジニアリングを行い、機械学習に最適な設計を行うことが、画像処理エンジニアの腕の見せどころであった。
しかし、深層学習以降は、タスクに応じたNW構造の設計やデータセットの構築が重要となった。
NW構造に関しても、CNN・GAN・Transformerのような技術的発展は要所要所ではあったものの、基本的な学習アルゴリズムの部分は同様である。
深層学習によるブラックボックス化では、画像認識でも同様に、モデルの動作原理理解が困難である。
説明可能アルゴリズムに関しては、自然言語処理・画像認識で同様の考え方ができるSHAP値等が考案されており、分野横断で開発が進められている。
今後はマルチモーダル化にて、自然言語処理と画像処理分野の融合が進んでくる。
私自身は画像認識から学問をスタートしているが、今回は自然言語処理に関して、知見を深めようと試みた。
今後のマルチモーダルの流れにおいては、双方の技術を理解していくことが重要であり、非常に良い取り組みであったと振り返る。
まとめ
画像処理エンジニアの視点から、自然言語処理の基礎を理解しようと試みた。
画像処理と比較して、自然言語処理は文章の意味を構成するパラメータとその自由度が多くこれらを統合的に機械処理することは難しいタスクであることを理解した。
一方で、画像処理と比較して、適用できるタスクの範囲が広く、エンジニアとしてのCanを広げるうえでは、非常に重要な技術領域である。
今後は深層学習の発展により、マルチモーダルが進展し、自然言語処理と画像処理の融合が進んでいくと考えられる。
その上で、自然言語処理を学ぶことは画像処理のエンジニアとしてのスキルを伸ばすことも期待することができると振り返る。
参考文献
備考
noteとのクロス投稿