画像認識分野は、ディープラーニングが活用されている代表的な分野です。画像認識分野での進歩に伴い、ディープラーニングの注目度があがってきました。この画像認識の進歩を時系列に沿って見てみましょう。
画像データは縦横の2次元に数値が並んでいます。厳密には、図6.1のように画像データは赤色、緑色、青色の3つの色情報を持ち、RGB画像、またはカラー画像と呼びます。RGB画像は縦と横だけでなく奥行きをもつ3次元となります。奥行きをチャネルと呼びます。この画像データに適した構造として考えられたのが畳み込みニューラルネットワーク (Convolutional Neural Network、CNN)です。通常のニューラルネットワークでも画像を扱うことはできます。そる画像データを分解して縦一列の情報に変換します。画像は、縦横の位置関係が重要な意味を持つので、一列に分解してしまうと大事な関係が失われてしまいます。畳み込みニューラルネットワークのように畳み込み層とプーリング層を利用して、2 次元のまま入力として扱うネットワーク構造のモデルの方が画像データには適しており、画像認識タスクでさまざまなモデルが考案されています。
CNNは、私たち人間がもつ視覚野の神経細胞の2つの働きを模してみようという発想から生まれています。その2つとは次の通りです。
その後1998年に、ヤン・ルカンによってLeNetと呼ばれる有名なCNNのモデルが考えられました。図6.3のように、畳み込み層とプーリング層 (またはサブサンプリング層) の2種類の層を複数組み合わせた構造をしています。
ネオコグニトロンとLeNetは層の名前こそ違うものの、構造上は非常に似ています。ネオコグニトロンにおけるS細胞層が LeNetにおける畳み込み層、C細胞層がプーリング層にそれぞれ対応しています。ただし、ネオコグニトロンは微分(勾配計算)を用いないadd-if silentと呼ばれる学習方法を用いるのに対し、LeNetでは誤差逆伝播法を用います。
より良いモデルを学習するためには、大量の学習データを用意しなければいけません。ただ単にデータを用意するだけでなく、そのデータの多様性も重要です。現実的にはあらゆるパターンを想定したデータを準備することは困難です。 そこで、手元にあるデータから擬似的に別のデータを生成するアプローチをとります。このアプローチは、データ拡張(data augmentation) と呼ばれ、データの「水増し」に相当します。手元にあるデータに対して、ランダムにいくつかの処理を施して新しいデータを作り出します。具体的な処理の例は次の通りです。
このような処理のほか、データの一部を別の値に入れ替えるparaphrasingやデータの一部分の値を0またはランダムにする Cutout Random Erasing、2つのデータを合成するMixupがあります。Cutoutはデータの一部分を遮蔽したようなデータを擬似的に生成することに相当します。一方、Mixupは2つのデータを合成するので、存在しないデータを擬似的に生成することに相当します。CutoutとMixupを組み合わせたCutMixなど擬似的なデータを生成する方法は組み合わせ次第で様々な方法が考えられます。さらに、どのようなデータ拡張の処理をどのくらいの強さで行えばよいか自体を学習により決める RandAugmentもあります。
このデータ拡張の効果は大きく、学習に必須の処理です。一方、やみくもに全ての処理を施さないように注意が必要です。 例えば親指を上げている「いいね」ボタンの画像を180°回転させてしまうと、意味が真逆になってしまうので、これらを同じパターンとして学習するのは適切ではありません。あくまでもデータ拡張が行っているのは、現実的にあり得るデータを再現しているということです。
物体認識タスクは、入力画像に対してその画像に映る代表的な物体クラスの名称を出力するタスクです。厳密には、識別対象としている物体クラスすべてに対する確信度を出力します。その確信度が最も高い物体クラスを識別結果として出力しています。
画像認識の精度を競うコンペティション (ILSVRC) において、2012年にAlexNet (アレックスネット)が、従来手法の精度を圧倒し、ディープラーニングに基づくモデルとして初めて優勝しました。AlexNetは、図6.4のような畳み込み層→プーリング層→畳み込み層→プーリング層→畳み込み層→畳み込み層→畳み込み層→プーリング層→全結合層 (3層) という構造をしています。
AlexNet以降、畳み込み層とプーリング層の繰り返しをさらに増やした、より深いネットワークのモデルが続々と登場しました。
VGGは、畳み込み層→畳み込み層→プーリング層の塊を繰り返し、16層まで積層しています。ネットワーク構造の設計思想をなるべく分かりやすくするために、各畳み込み層のフィルタサイズを3×3に統一し、プーリングを行った次の畳み込み層からフィルタ数を2倍に増やすというシンプルな基本設計を採用しています。また、VGGでは、深くなっても学習できるよう、いったん少ない層数で学習した後、途中に畳み込み層を追加して深くする学習方法をとっています。
2014年に優勝したGoogLeNetは、層を深くするだけでなく、図6.5のような同時に異なるフィルタサイズの畳み込み処理を行うInceptionモジュールを導入しています。Inceptionモジュールを積層することで深いネットワークにしつつ、着目する範囲が異なる特徴を合わせて捉えることができています。また、ネットワークの層数が増えているため、ネットワークの途中に認識結果を出力する層を追加し、学習時に誤差を逆伝播する補助的な機構を導入しています。
VGGやGoogLeNetは、10から20層程度の深さですが、さらに「超」深層になると識別精度が落ちるという問題に直面しました。そこで、この問題を解決するスキップ結合を導入したResNetが、2015年に優勝しました。ResNetは、図6.6のような構成となっており、ILSVRCで優勝したモデルは152層と「超」深層です。ILSVRCのテスト画像を人間が画像認識した場合、エラー率はおおよそ5%です。ResNetは、人の識別精度を超えることができています。ナ 人の識別精度を超えることができています。ただし、ILSVRCでは、1000クラスの識別対象の中でどれかを識別しているので、ResNetは、この1000クラス以外の物体を人間のように識別できません。あくまで限られた条件において、人間を超えているということに注意しましょう。
ResNetは、単純なアイデアにもかかわらず高い識別精度を達成しました。以降、ResNetが主流のモデルとなり、フィルタ数を増やしたWide ResNetやスキップ結合を工夫したDenseNetなど派生モデルが登場しています。
2017年は、畳み込み層が出力した特徴マップに重み付けするAttention機構を導入したSqueeze-and-Excitation Networks (SENet) が優勝しました。このAttention機構はVGGやResNetなどの様々なモデルに導入できる汎用的なアイデアです。そのため、以降の研究では様々なところで応用されています。
一方、ネットワークの層数を深くすると畳み込み層のフィルタや全結合層の重みなどのパラメータ数が増加します。モバイル端末などの使用できるメモリ量が限られている環境でも利用できるよう、MobileNetは、畳み込み層にDepthwise Separable Convolutionを用いてパラメータ数を削減しています。
新たなネットワークの構造を考える際、層数だけでなく、フィルタのサイズやフィルタ数、スキップ結合の有無、さらには活性化関数やプーリングの種類など、決めるべき項目がたくさんあります。これまで、開発者がこれらの各項目を試行錯誤して決定し、ネットワークの構造を考案してきました。しかしながら、人が最適なネットワーク構造を探し出すことは不可能です。また、全ての組み合わせを含めた最適化はスーパーコンピュータを利用したとしても困難です。そこで、学習により準最適なネットワーク構造の探索を行うことが注目されています。
Neural Architecture Search (NAS) では、リカレントニューラルネットワークと深層強化学習を用いてネットワーク構造を探索しています。NASは、リカレントニューラルネットワークが出力した各層のフィルタサイズやフィルタ数などをもとにネットワークを作成し、学習および評価します。そして、認識精度が高くなるよう深層強化学習によりネットワークを生成する部分を学習します。このとき、生成する単位をResNetのResidual Blockのような塊にする工夫を導入したNASNet や、認識精度だけでなくモバイル端末での計算量も考慮する工夫を導入したMnasNetなどもあります。
これらのネットワーク構造の探索には非常に時間がかかりますが、優れたネットワーク構造も誕生しています。その構造をもとにしたモデルがEfficientNetです。EfficientNetは、単に高精度度なだけでなく、転移学習に有用なモデルとして、様々なコンペティションに活用されています。
物体検出タスクは、入力画像に映る物体クラスの識別とその物体の位置を特定するタスクです。物体の位置は、矩形領域 (四角形)とし、その左上の座標と右下の座標を出力します。 物体検出には、大まかな物体の位置を特定した後、その物体クラスを識別する2段階モデルと位置の特定とクラスの識別を同時に行う1段階モデルがあります。1段階モデルは処理を単純にできるため、高速な処理を実現できることが期待されています。2段階モデルにはR-CNNとその後継モデルやFPNが、1段階モデルにはYOLOとその後継モデルやSSDが挙げられます。
R-CNNは、画像から物体候補領域をSelective Searchというセグメンテーションの方法で抽出します。そして、この物体候補領域を一定の画像サイズにリサイズ後、CNNに入力します。R-CNNでは、CNNで最終判定まで行うのではなく、最上位層の1つ前の層を特徴ベクトルとし、サポートベクターマシン (SVM) によりクラス識別を行います。R-CNNは、物体候補領域ごとにこのような識別処理を行うため、処理時間がかかります。
R-CNNの構造を簡略化して、高速化されたモデルがFast R-CNNです。Fast R-CNNは、物体候補領域をそれぞれCNNに入力するのではなく、画像全体を入力して特徴マップを獲得することで高速化します。特徴マップ上で物体候補領域に相当する部分を切り出し、識別処理を行います。
Fast R-CNNまで利用していたSelective Searchは、処理時間がかかります。この処理をRegion Proposal Network (RPN) というCNNモデルに置き換えてさらに高速化したモデルがFaster R-CNNです。
物体検出タスクでは、検出精度も重要ですが、高速な処理も重要です。高速化に取り組んだ1段階モデルがYOLO (You Only Look Once)です。YOLOは、図6.7のように出力層を工夫して入力画像の各位置における物体領域らしさと矩形領域を直接出力する仕組みになっています。この各位置は入力画像の画素単位ではなく、グリッドに分割した領域単位となっています。YOLOには、バッチ正規化や入力画像サイズの高解像度化などの新たなテクニックを導入したモデルも登場し、より高い検出精度を達成しています。
SSDは、CNNの途中の特徴マップからYOLOのように領域単位で物体らしさと矩形領域を出力します。図6.8は、SSDの構造です。CNNの途中の特徴マップサイズは、徐々に小さくなり、最後の特徴マップは入力画像の1/32程度です。そのため、小さな物体を検出しにくくなります。SSDでは途中の特徴マップからも出力することでこの問題を解決しています。また、デフォルトボックスという矩形領域のテンプレートのようなパターンに対するズレを矩形領域の情報として出力する工夫も導入されています。デフォルトボックスのパターンを複数用意しておくことで、縦長や横長の物体を検出しやすくしているのです。
セグメンテーションタスクは、画像の画素ごとに識別を行うタスクです。セグメンテーションタスクには、画像全体を対象とするセマンティックセグメンテーション、物体検出した領域を対象とするインスタンスセグメンテーションがあります。セマンティックセグメンテーションの場合は、同一クラスの物体をひとまとめにするので、集団の歩行者などを一人一人分離することができません。インスタンスセグメンテーションは、物体検出した領域に対してセグメンテーションを行うため、一人一人を分離できるようになります。個々の物体をそれぞれ分離しつつ、道路や建物などはひとまとめにするパノプティックセグメンテーションもあります。各セグメンテーションの例は図6.9のようになります。
セマンティックセグメンテーションは、画像の画素ごとに画像認識タスクを行いますが、1画素の情報から何のクラスかを識別することは不可能です。CNNは畳み込み層とプーリング層を繰り返し積層することで、特徴マップサイズは小さくなります。このサイズが小さくなった特徴マップの1つの画素は入力画像の広い範囲の情報を集約しているので、1画素ごとにクラス識別ができるようになります。CNNをセマンティックセグメンテーションタスクに利用した方法がFCN (Fully Convolutional Network)です。一般的なCNNは、畳み込み層とプーリング層だけでなく、全結合層を用います。FCN は、図6.10のように全結合層を用いず、畳み込み層だけで構成するモデルを採用しています。FCNの最後の特徴マップは入力画像に対して小さいため、出力を入力画像サイズまで拡大すると解像度が粗いセグメンテーション結果になります。
畳み込み層とプーリング層を繰り返し積層することで小さくなった特徴マップを徐々に拡大する構造を採用した方法にSegNetがあります。図6.11のように、特徴マップを徐々に小さくしていく部分をエンコーダ、徐々に大きくしていく部分をデコーダと言います。デコーダでは、特徴マップを拡大して畳み込み処理を行います。SegNetのエンコーダとデコーダは対になっています。エンコーダ側の最大値プーリングした位置を記憶しておき、デコーダ側の拡大時に記憶していた位置に特徴マップの値を配置してそれ以外の位置の値は0にすることで、境界付近のセグメンテーション結果をぼやけさせない工夫が採用されています。
デコーダ側で特徴マップを拡大して畳み込み処理する際、図6.12のようにエンコーダ側の特徴マップを同じサイズになるよう切り出して利用するU-Netというモデルもあります。U-NetはX線画像(CT、MRIなど)の医療画像診断に用いられています。
エンコーダとデコーダの間にPyramid Pooling Moduleという複数の解像度で特徴を捉えるモジュールを追加したPSPNetがあります。Pyramid Pooling Moduleは、エンコーダで得られた特徴マップを異なるサイズでプーリングし、それぞれの大きさで畳み込み処理を行います。
例えば、1×1までプーリングされた特徴マップでは、画像全体のコンテキストを捉えることができます。このように、画像全体や物体の大きさに応じた特徴をマルチスケールで捉える方法となっています。
セマンティックセグメンテーションでは、広い範囲の情報を集約することが重要となります。そこで、畳み込み層には、 Dilated convolutionまたはAtrous convolutionが利用されています。このAtrous convolutionを導入したモデルがDeepLab です。さらにSegNetやU-Netのようなエンコーダとデコーダの構造、PSPNetのような複数解像度の特徴を捉える機構 (ASPP:Atrous Spatial Pyramid Pooling) を採用したモデルはDeepLab を採用したモデルはDeepLab V3+と呼ばれています。
姿勢推定は、人の頭や足、手などの関節位置を推定するタスクです。姿勢推定結果を利用することで、監視カメラ映像から人の異常行動を認識したり、スポーツ映像から人の動作を解析したりできます。
関節の位置は、人の姿勢により大きく異なります。そのため、信頼度マップによるアプローチが有効です。これは、図 6.13のように入力画像に対して各関節の位置を信頼度マップとして出力する方法です。
Convolutional Pose Machinesは、CNNを多段に組み合わせて徐々に各骨格の信頼度マップを高精度化していきます。多段に組み合わせることで、着目する範囲を広げていき、人の体全体の構造を考慮して各骨格の位置を推定できます。
複数の人の骨格を同時に推定できるようにした手法にOpen Poseがあります。画像中に複数人いる場合、各骨格の信頼度マップは、それぞれの人物の骨格に対応する位置の信頼度が高くなります。そのため、骨格間のつながり、すなわちどの頭の位置とどの肩の位置が同じ人物に属するかなどが分かりません。OpenPoseは、Parts Affinity Fieldsと呼ばれる骨格間の位置関係を考慮した処理を導入しています。これにより、骨格の位置関係が分かるようになります。図6.14は、OpenPose による姿勢推定結果例になります。
画像認識分野において、CNNは出力層やネットワーク構造を工夫することで様々なタスクに応用されています。複数のタスクを1つのモデルで対応することをマルチタスクと呼びます。Faster R-CNNやYOLOなどの物体検出モデルは、物体クラスの識別と物体領域の位置検出を同時に行っているのでマルチタスクとも言えます。
Mask R-CNNは、Faster R-CNNによる物体検出だけでなく、セグメンテーションも同時に行うマルチタスクのモデルです。このセグメンテーションは、物体検出した領域ごとに行うので、インスタンスセグメンテーションになります。図6.15 は、Mask R-CNNによるインスタンスセグメンテーション結果例になります。
音声はアナログデータであり、そのままではコンピュータでは扱えません。また音声はさまざまな特徴の組み合わせで構成されています。本節では音声データをコンピュータで扱うための音声処理技術について紹介します。
音声は本来、空気の振動が波状に伝わるものであり、時間とともに連続的に変化するアナログなデータです。これをコンピュータで扱うには離散的なデジタルデータに変換する必要があります。この変換処理をA-D変換(Analog to Digital Conversion) と呼びます。音声はパルス符号変調 (Pulse Code Modulation、PCM) という方法でデジタルデータに変換されることが一般的です。PCMでは連続的な音波を一定時間ごとに観測する標本化(サンプリング)、観測された波の強さをあらかじめ決められた値に近似する量子化、量子化された値をビット列で表現する符号化の3つのステップを経てデジタルデータに変換します。
音声信号は様々な周波数の三角関数に適切な重みをかけて足し合わせたものと考えることができます。そのため入力された音声信号にはどのような周波数がどれほどの強さで含まれているかを分析することは重要です。また音声信号は時々刻々と変化するため、そこに含まれる周波数成分も変化していきます。このため非常に短い時間ごとに周波数解析を行う必要があるのですが、これを高速に行うことができる手法として高速フーリエ変換 (Fast Fourier Transform、FFT)が広く使われています。FFTにより音声信号は周波数スペクトルに変換できます。
COLUMN
メル尺度について
音の高さは周波数で表され、周波数が倍になると音楽では1オクターブ上がることと同じ意味を持ちます。一般的に人間が聴き取ることができる周波数の範囲は20Hzから20kHzと言われていて、特に日常生活で触れる周波数は数百Hz程度の低周波が多いようです。 そのためか、人間の聴覚は低周波領域の周波数の違いには敏感であるのに対し、高周波領域では鈍感であると言われています。そこで人間が感じる音の高低に合わせた尺度としてメル尺度 (mel scale) が提案されました。1000Hzの音を1000メルと定義し、メル尺度の差が同じであれば、人間が感じる音の差も同じであるように定義されています。
音(音声も含みます)は「高さ」「長さ」 「強さ」「音色」という属性を持ちますが、このうち「音色」が音の違いを認識する上で重要な属性です。「高さ」 「長さ」 「強さ」が全く同じ音であっても異なる音として認識できる場合には「音色」が違うと言うことができます。「 の違いは周波数スペクトルにおけるスペクトル包絡 (スペクトル上の緩やかな変動)の違いと解釈することが多く、このためスペクトル包絡を求めることが重要となります。スペクトル包絡を求めるためのデファクトスタンダードとなっているのがメル周波数ケプストラム係数(Mel-Frequency Cepstrum Coefficients、MFCC)を用いる方法です。MFCCを用いると入力された音のスペクトル包絡に相当する係数列が得られ、これが「音色」に関する特徴量となり、以降の処理、例えば音声認識等で使うことになります。なおスペクトル包絡を求めるといくつかの周波数でピークを迎えることが分かりますが、このピークをフォルマントと呼び、フォルマントのある周波数をフォルマント周波数と呼びます。 入力された音声の音韻 (言語によらず人間が発声する区別可能な音)が同じであればフォルマント周波数は近い値となりますが、個人差により多少のズレが生じます。
音声認識は与えられた音声データをテキストに変換して出力する技術で、Speech-to-Text (STT) とも呼ばれます。一般的な音声認識器は音響モデルと言語モデルの2つのモデル、および単語とその単語を発音したときの音素(言語ごとに区別される音の最小単位) 列をペアにした辞書で構成されています。音響モデルはある単語列を発声したときに、それに対応する音素列がどれぐらいの確率で観測されるかを表す確率モデルです。言語モデルはある単語列がどのぐらいの確率で出現するかを表す確率モデルで、単語列の文章としての自然さを表しています。音声認識器に音声データが入力されると、辞書に格納された情報から考えうる数多くの音素列および単語列が生成され、それぞれが音響モデルおよび言語モデルによってスコア付けされます。これら2つのスコアを統合して最も良いものが最終的な音声認識結果として出力されます。 音響モデルとして長い間、標準的に用いられているのが隠れマルコフモデル (Hidden Markov Model、HMM)です。 HMMは音素ごとに学習しておきます。こうすることで様々な単語の認識に対応することができます。単語を認識する際にはあらかじめ定義された単語と音素列の対応辞書により音素列に変換し、音素列に従ってHMMを連結することでモデル化します。音響モデルとしてはHMMの他にも混合正規分布モデル (Gaussian Mixture Model, GMM)や、CNNやRNNなどのニューラルネットワークも用いられます。
RNNの場合、音声データを時系列で逐次入力していき、入力に対する音声の音素を出力します。しかし、入力した音声デー夕の時系列の数と、認識すべき正解の音素の数は必ずしも一致しません。そこで、Connectionist Temporal Classification (CTC) を用います。CTCでは、出力候補として音素に加えて空文字(何も出力しないのと同義)を追加し、さらに連続して同じ音素を出力した場合には一度だけ出力したものと縮約する処理を行います。これにより、出力の長さと正解の長さが違う場合でも処理できるよう対処しています。なお、空文字は、同じ音素を出力することが正解の場合に、空文字を出力することで誤って縮約してしまうことを防ぐために必要です。
言語モデルとしてはn-gram言語モデルが長い間用いられてきました。これはある単語が出現する確率を、それより前のN-1 個の単語が出現したという条件のもとでの条件付き確率としてモデル化するもので、与えられた文全体の確率はその中の各単語の条件付き確率の積として計算されます。また最近ではRNNやトランスフォーマーなどのニューラルネットワークを用いた言語モデルも広く用いられています。
音響モデルも言語モデルもニューラルネットワークの導入が進んでいるため、現在では音声データから直接単語列を生成するような、End-to-Endの音声認識モデルも登場しています。
音声認識技術が発達すると、人間と機械が音声でストレスなく対話したり、複数の人が参加する会議等で議事録を自動作成したりといったことができるようになるでしょう。しかしこれらの応用を実現するためには、さらに解決すべき問題が出てきます。例えば機械との対話においては、機械がより適切な応答を返すために、人間の音声の感情分析を行う必要があるでしょう。自動議事録作成では誰の発話かを推定する話者識別が必要になります。このように、音声認識では単にテキストに変換するだけではなく、様々な問題も同時に解決する必要があります。
音声合成は与えられたテキストを音声に変換して出力する技術で、Text-to-Speech (TTS) とも呼ばれます。従来の音声合成では与えられたテキストの形態素解析、読み推定、読みから音素列への変換、音素列から音声波形の生成などのいくつかのステップを経て音声合成が実現されていました。音声波形の合成には、ある話者の様々な音素の波形をあらかじめデータベース化しておき、これらを組み合わせて音声合成を行う波形接続方式と、声の高さや音色などに関するパラメータをHMMなどによって推定し、これをもとに音声を合成するパラメトリック方式の2つがあります。それぞれ一長一短あるのですが、パラメトリック方式の方が波形接続方式よりも合成の質が低いとされていました。
2016年にDeepMindからディープラーニングを用いたパラメトリック方式の音声合成モデルである WaveNetが発表されました。従来の音声処理では、上記のように音声データを周波数スペクトルなどに変換してから処理するのが一般的でしたが、WaveNetではこの変換を行わず、量子化された状態のままニューラルネットワークで処理することで、音声合成の質を劇的に向上させることに成功しました。
「自然言語」とは我々が日常的に使っている言葉のことで、プログラミング言語などと区別してこう呼ばれています。本節では自然言語をコンピュータで処理させる自然言語処理技術について紹介します。
テキストデータを扱う場合、文字列を直接入力することはできません。そのため、何かしらの変換が必要となります。代表的な変換方法について、次に説明していきます。
テキストデータを扱う場合には文章、段落、文、単語、サブワード (単語と文字の中間的な表現)、文字など様々な単位が考えられますが、ひとまず単語を単位として扱うことを考えましょう。するとある文字列は複数個の単語を並べたものとして表現できます。これを単語n-gram (nは並べる個数)と呼びます。n-gramは単位となるものを複数個並べたものという意味なので、例えば単位が文字ならば文字n-gramになりますし、音声処理では音素n-gramなどが使われます。なお n = 1 の場合をユニグラム (uni-gram)、 n = 2 をバイグラム (bi-gram)、 n = 3 をトライグラム (tri-gram) と呼びます。
では単語を単位として文や文章などを表現するにはどのようにすればよいでしょうか。これらを単に単語列として表現することは可能ですが、それでは複数の文や文章をまとめて分析するときなどに不便です。そこで文や文章を、そこに出現する単語の集合として表現することを考えます。これをBag-of-Words (BoW) と呼びます。BoWでは単語がバラバラに保存されており、出現順序の情報は失われてしまいますが、局所的な出現順序が重要な意味を持つ場合もあります。そこでn-gramと BoWを組み合わせたBag-of-n-gramsを利用することもあります。
単語をコンピュータで扱うときには、文字列としてではなく数値に変換して扱うことが一般的です。特にニューラルネットワークは数値列 (ベクトル) しか扱えないので、単語もベクトルとして入力する必要があります。典型的な方法は、各単語に異なる整数値を順に割り当ててID化し、このIDに相当するベクトルの次元の値だけが1で他が全て0となっているワンホットベクトル (one-hot vector) に変換するというものです。こうすることでBoWとして表現された文章も、各次元の値がその次元に相当する単語の文章中の出現頻度である1つのベクトルとして表現することができます。
大量の文章をそれぞれBoWのベクトルで表現し、これを全て並べていくと行列のような形になります。このように文章集合を行列として表現すると、線形代数を用いて様々な分析を行ったり、情報を圧縮したりといったことが可能となります。また行列の形にしておくと、全ての文章間のコサイン類似度を計算するといった処理も簡単に行えるようになります。
さて、コサイン類似度により文章間の類似度を計算する際には、特定の文章にのみ頻繁に出現するような特徴的な単語と、 どの文章にでも出てくるような一般的な単語は異なる重みで計算する方が、文章間の類似度をもっともらしく求めることができそうです。このように単語の重要度のようなものを計算する手法の一つに、TF-IDF (Term Frequency-Inverse Document Frequency)があります。TF-IDFは各文章の単語ごとに計算され、TFとIDFという2つの値を掛け合わせたものになります。 TFは1つの文章内での単語の出現割合(単語の頻度を文章内の全単語数で割ったもの)であり、IDFはある単語が出現する文章の割合(ある単語が出現する文章の数を全文章数で割ったもの)の逆数を取り、さらに対数を取ったものです。TF-IDFは1 文章内での出現回数が多く、出現する文章の数が少ない単語ほど大きな値となるため、TF-IDFの値の大きさがある程度その単語の重要度を表していると考えることができます。
ワンホットベクトルは値が0か1しかなく離散的で、1をとる次元が1つしかないため情報が疎であり、次元数が単語の種類 、非常に高次元であるという特徴があります。このような単語の表現を局所表現 (local representation)と呼びます。局所表現では単語同士の意味の近さを考慮するといったことができないため、局所表現を連続的(実数値全体を取る)で、情報が密であり (値が0である次元が少ない)、次元数の低いベクトルに変換することを考えます。このような単語の表現を分散表現(distributed representation) や単語埋め込み (word embedding) と呼びます。単語を分散表現で表すことで、ベクトル間の距離や位置関係から単語の意味を表現することができます。ここでは単語の分散表現を得る代表的な手法であるword2vecを解説します。
word2vecは、「単語の意味は、その周辺の単語によって決まる」という分布仮説と呼ばれる言語学の主張をニューラルネットワークとして実現したものと考えられます。ニューラルネットワークの中間層の値は一種のベクトルとみなすことができますが、その中間層の値を単語の意味を示す値と考えることになります。例えば「王様」-「男性」+「女性」=「女王」というベクトルの演算が有名ですが、これは王様ベクトルの値から男性ベクトルの値を引いて、女性ベクトルの値を加える処理を行うと「女王」 ベクトルに最も近くなることを表しています。同様にして、saw-see+eat=ateであれば「見る」の過去形であるsawから「見る」の原形であるseeを引いて、「食べる」の原形であるeatを加えると「食べる」の過去形であるateのべクトルになることを表します。つまりsawからseeを引くことで、「過去形に変化させるベクトル」が得られていると考えられます。
word2vecには、スキップグラム (skip-gram) とCBOW (Continuous Bag-of-Words) という2つの手法があります。スキップグラムとは、ある単語を与えて周辺の単語を予測するモデルであり、CBOWはその逆で周辺の単語を与えてある単語を予測するモデルです。図6.16 はそれぞれの手法の違いを図示したものです。どちらのモデルでも中間層の表現 (したがって中間層のニューロン数の次元を持つ実数ベクトル) をその単語の意味表現とみなします。
図6.17 はword2vecによって得られた意味表現のうち、国と対応する首都との関係を取り出し、主成分分析(Principle Component Analysis、PCA) を用いて2次元に次元圧縮 (dimensionality reduction) した値を表示した図です。横軸は大まかに国と首都との対応関係を表しており、対応する国名とその首都とが線で結ばれています。一方、縦軸は下から上に向かってユーラシア大陸を西から東に横断するように地理的関係を保ってそれぞれがプロットされていることが分かります。
word2vecを提案したトマス・ミコロフらによって新たに開発された、word2vecの延長線上にあるfastTextというライブラリがあります。word2vecと比較した場合のfastTextの変更点は、単語埋め込みを学習する際に単語を構成する部分文字列の情報も含めることです。部分文字列の情報を併用することで訓練データには存在しない単語 (Out Of Vocabulary、OOV)であっても単語埋め込みを計算したり、活用する単語の語幹と語尾を分けて考慮したりすることを可能にしました。
またfastTextは学習に要する時間が短いという特徴を持っています。ウィキペディアとコモンクロールを用いて訓練した世界中の157言語によるそれぞれの訓練済みデータを提供しています。
word2vec fastTextで得られる分散表現は各単語1つだけですが、これだと多義性を持つ単語や他の特定の単語と結びついて特別な意味を持つ単語などを正しく扱うことができません。そこで新たにELMO (Embeddings from Language Models) と呼ばれる、文脈を考慮した分散表現を得る手法が提案されました。ELMoを用いると英語の“bank”のように複数の意味を持つ単語であっても、その単語が出現した文の他の単語の情報から、その文において適切な意味を表した分散表現を得ることができます。
画像認識分野では以前から、VGG16などのように大規模なデータで事前学習 (pre-training) したモデルを基に、特定のカテゴリの小規模なデータを使って転移学習 (transfer learning) することで、小規模なデータであっても高精度に認識を行うことが可能でした。自然言語処理分野においても同様に、事前学習+転移学習という枠組みで様々な応用タスクを高精度に解くことができるモデルが2018年に提案されました。ここではその先駆者であるGPTとBERTを紹介します。
なおword2vecやELMoも事前に大規模なデータを使って学習をしているという点では共通しています。しかし、これらのモデルはそれだけで応用タスクを解くことはできず、タスクに応じた別のニューラルネットワークを用意する必要があります。 一方でGPTやBERTは事前学習と同じモデルを使って応用タスクを解くことができるという大きな違いがあります。そのため、事前学習モデルというときはGPTやBERTのことを指し、word2vecやELMoは含まないことが一般的です。
GPT (Generative Pre-Training) はOpenAIが開発した事前学習モデルです。事前学習として行うのは大規模なコーパスを用いた言語モデルの学習で、トランスフォーマーのデコーダと似た構造を持ったネットワークを用いています。言語モデルという性質上、将来の単語の情報は使うことができませんので、トランスフォーマーのエンコーダではなくデコーダの構造のみを用いることになります。
図6.18 にGPTの事前学習と転移学習の概要を示します。図の左側が事前学習で、過去の単語列から次の単語を予測する言語モデルの学習が行われています。右側が転移学習で、ここでは評判分析 (sentiment analysis) タスクを解いている様子を示しています。与えられた文をGPTに入力し、全て入力し終わった最後の状態を使って、入力された文の極性 (positive かnegativeかneutralか)を判定しています。
ここでポイントとなるのは、事前学習と転移学習で全く同じモデルを用いているという点です。モデルの中身はトランスフォーマーのデコーダと同様、Self-Attentionを利用しています。ただしエンコーダがないのでSource-Target Attentionはありません。図6.18と全く同じ方法で入力データの与え方を工夫するだけで、評判分析だけでなく以下のような様々なタスクを解くことができます。
これらのタスクは文書に書かれている内容やその背景などを正確に理解しないと高精度に解くことができないため、一般的に言語理解タスクと呼ばれています。なおこれら様々な言語理解タスクをまとめたGeneral Language Understanding Evaluation (GLUE) ベンチマークというデータセットが公開されており、世界中の研究者がこのデータセットでの精度を競っています。またGLUEだけではなく、様々な言語理解タスクのデータセットが公開されています。
BERT (Bidirectional Encoder Representations from Transformers) はGoogle社が開発した事前学習モデルで、その名の通りトランスフォーマーのエンコーダを利用しています。エンコーダということは入力される文全体が見えている状態ですので、通常の言語モデルによる学習は行えません。代わりにBERTではMasked Language Model (MLM) と Next Sentence Prediction (NSP) という2つのタスクにより事前学習を行います。MLMは文内の単語のうちの一部をマスクして見えないようにした状態で入力し、このマスクされた単語を予測させるタスクです。NSPは2つの文をつなげて入力し、2つの文が連続する文かどうかを判定するタスクです。大規模なコーパスを用いてこれら2種類のタスクを解くことで、BERTの事前学習を行います。文全体が見えているということは、通常の言語モデルのように過去から現在までの一方向だけの情報しか使えないのではなく、未来から現在までも合わせて両方向 (Bidirectional) の情報を同時に使うことができるため、通常の言語モデルによる事前学習よりも強力であることが期待されます。
図6.19 にBERTの事前学習と転移学習の概要を示します。図の左側が事前学習の様子を示しており、右側が転移学習により評判分析タスクを解いている様子を示しています。事前学習においては2つの文を [SEP] (separateの意味)という文区切りを表す特別なトークンで結合したものに、さらに先頭に [CLS] (classificationの意味)という特別なトークンを付加したものを入力しています。また文内の単語の一部がマスクされ、[MASK] というトークンに置き換わっています。
[MASK]に相当する部分の最終状態を使ってMLMを行い、[CLS]に相当する部分の最終状態を使ってNSPを行います。[CLS] トークンの最終状態には文全体の情報など分類問題を解くために必要な情報が保存されており、これを使うことで事前学習ではNSPを、転移学習ではGPTでも解くことができた様々な応用タスクを解くことができます。さらに各単語の最終状態を使って品詞タグ付けや固有表現解析を行ったり、SQuAD (Stanford Question Answering Dataset) のような回答の範囲を予測するタイプの質問応答タスクを解いたりすることも可能です。
GPTやBERTが登場してからまだ数年しか経っていません。しかし次々と新たな事前学習モデルが提案され続け、タスクを解く精度も上がり続けていますので、最新の情報には常に目を光らせておく必要があります。これらのモデルはそれぞれに特徴がありますが、ここではモデルが持つパラメータ数に注目します。
GPTのパラメータ数は約1億で、BERTは約3億でした。この時点で既に扱うのが困難なほどのパラメータ数であったため、 タスクの精度を落とさずにパラメータ数を削減する工夫をしたALBERTやDistilBERTといったモデルが提案されました。一方で、さらにパラメータ数を増やすことでより強力なモデルを目指したものも提案されています。GPTの後継で2019年2月に登場したGPT-2は約15億のパラメータを持ち、GPTでは行えなかった機械翻訳などの言語生成タスクも行えるようになりました。2019年9月にはNVIDIAからMegatron-LMという約83億のパラメータを持つモデルが登場し、2020年2月にはMicrosoft からTuring-NLGという170億ものパラメータを持つモデルが登場しました。そして2020年5月にはGPTの最新版であるGPT-3 が登場し、パラメータ数は1750億にまで巨大化しました。GPT-3を使うと様々な言語生成タスクが非常に高精度に行えるということで話題となりました。また面白いことに、トランスフォーマーが画像処理分野にも持ち込まれ、CNNを使わない新たな事前学習モデルであるVision Transformer (ViT) も2020年に登場しています。
その後もさらにパラメータ数を増やしたモデルや、出力を高精度化するための様々な工夫が提案され、大規模言語モデルは年々進化していきました。GoogleからはPaLM、DeepMindからはChinchilla、メタからはLLaMAといったモデルが出ています。最近では1兆を超えるパラメータ数を持つPanGu-∑といったモデルも登場しています。そんな中、世界中で話題となったのが2022年11月に登場したChatGPTです。ChatGPTではこれまでのようなテキストデータからの言語モデルの学習だけでなく、生成された応答が適切かどうかを人間が判断し、その判断結果から強化学習を用いることで、より高精度な応答を生成することができるようになりました。これをRLHF (Reinforcement Learning from Human Feedback) と呼びます。またチャットインタフェースにより、ユーザーが意図した回答を生成させることが非常に容易になりました。その後もさらに進化したGPT-4が登場していますが、あまりにも高精度なため危険であるという理由から、その詳細が明かされていません。他にもGoogleからはPaLM2をベースとしてチャット機能を搭載したBardが登場しました。
自然言語処理には基礎から応用まで様々なタスクがあります。文を形態素という単語のような単位に分割する形態素解析、 形態素間の関係を分析し、文全体の構造を求める構文解析といった基礎解析から、検索エンジンに代表される情報検索、文書要約、機械翻訳、対話システムといった応用タスクまで、言語を扱うことは全て自然言語処理が関係します。身近なところでは仮名漢字変換やスパムメール判定などにも自然言語処理が用いられています。
自然言語処理は年々高度化しており、人間が言語を扱うのと同じようなレベルの複雑なタスクも行えるようになってきました。特に大規模言語モデルを用いることで様々な言語理解タスクが解けるようになってきています。現在では数多くの言語モデルが提案され利用可能となっていますが、これらのモデルの性能を測るための指標の一つとして、様々な言語理解タスクをまとめたGeneral Language Understanding Evaluation (GLUE) ベンチマークというデータセットも公開されており、世界中の研究者がこのデータセットでの精度を競っています。GLUEには以下のようなタスクが含まれます。
またGLUEよりもさらに複雑なタスクを扱うSuperGLUEや、日本語に特化したJGLUEといったベンチマークデータセットも公開されています。
本節では、強化学習をディープラーニングで拡張した深層強化学習について扱います。最初に、深層強化学習で最も基本的な手法であるDQNの詳細とその拡張手法を解説し、続いて深層強化学習の主要な応用分野であるゲームAIやロボット学習で用いられる重要な手法や概念を解説します。
ディープラーニングと強化学習を組み合わせた手法は深層強化学習 (deep reinforcement learning) と呼ばれます。2013 年に、深層強化学習で最も基本的な手法であるDQN (Deep Q-Network) がDeepMind社から発表されました。DQNは、 Atari社が開発した家庭用ゲーム機Atari 2600の多種多様なゲームを、人間並み、または人間以上のスコアで攻略できることが示され、深層強化学習が注目を浴びるきっかけとなりました。
DQNの登場後、このDQNを拡張した手法や、その他にディープラーニングをうまく強化学習に取り入れた手法が多く登場することとなり、深層強化学習は人工知能研究の一大分野となっています。図6.20に、従来の強化学習と深層強化学習手法の発展をまとめました。
3章で解説したQ学習では、ある特定の状態に対して1つの行動価値 (Q値)を割り当てて、その行動価値に対する学習を行っていました。しかし、デジタルゲームや、ロボットの制御では、状態がゲームや実世界の画像として与えられ、画像内のピクセル単位のわずかな違いであっても別の状態と認識されるため、考えられる状態数は膨大になります。これら全ての状態に対して従来のQ学習のように1つ1つ行動価値を割り当てる手法を適用するのは、非現実的です。そこでDQNでは、ゲームや実世界の画像をそのままディープニューラルネットワークの入力とし、行動候補の価値関数や方策を出力として学習するというアプローチをとります。この時に使うディープニューラルネットワークを畳み込みニューラルネットワークにすることで、入力の画像から価値推定に必要な情報をうまく処理できます。
DQNでは、経験再生(experience replay) やターゲットネットワーク (target network) という新しい学習手法が導入されています。経験再生は、環境を探索する過程で得た経験データをリプレイバッファと呼ばれる機構に保存し、あるタイミングで、これらの保存データをランダムに複数抜き出してディープニューラルネットワークの学習に使う手法です。これにより、学習に使うデータの時間的偏りをなくし学習の安定化を図っています。ターゲットネットワークは、現在学習しているネットワークと、学習の時間的差分がある過去のネットワークに教師のような役割をさせる手法です。これにより価値推定を安定させます。
DQNの登場以降はこれらの経験再生やターゲットネットワークの使い方を工夫したダブルDQN (double deep q-network) や優先度付き経験再生(prioritized experience replay)、ディープニューラルネットワークのアーキテクチャや出力を工夫したデュエリングネットワーク (dueling network)、カテゴリカルDQN (categorical deep q-network)、ノイジーネットワーク (noisy network) などの拡張手法が発表され、これら全てを組み合わせたRainbowと呼ばれる手法に発展しています。
Rainbowは、図6.21 に示すように、DQNやその他の拡張手法と比べると飛躍的に性能が向上しています。また、 Rainbow以降も、複数CPUやGPUを使って学習を行う分散型強化学習により学習の収束速度が飛躍的に上昇しています。さらに、内発的報酬 (intrinsic reward) と呼ばれる報酬の工夫により、極めて難易度の高いゲームにおいても人間以上のパフォーマンスを発揮する手法が発表されています。
近年では、環境のモデルを作って深層強化学習を行うモデルベース強化学習が発展しており、前述したAtari 2600のゲームをモデルベースで攻略する手法がいくつか提案されています。モデルベース強化学習については、後述します。また、2020年前半にDeepMind社から発表されたAgent57と呼ばれる手法では、Atari 2600のベンチマークとなる57ゲーム全てで人間のスコアを超えるようになりました。
深層強化学習の応用で最も盛んな分野の1つは、囲碁や将棋などのボードゲームをはじめとしたゲームの攻略を行う、ゲームAIです。
ディープラーニング登場以前のゲームAIは、ゲームの現在の局面の良さを判断する評価関数を人間が設計し、これをもとにゲームの局面をノードとしたゲーム木を探索して最良の行動を求める手法が主流でした。これに加え、あらかじめゲーム展開に対して特定の行動を決定するルールを組み込んだルールベース手法や、ディープラーニングを使わない古典的な強化学習もよく使用されました。しかし、ディープラーニング登場以前のゲームAIは、囲碁のトッププレーヤーには及ばず、2.2で解説するような、リアルタイムの行動が要求されるゲーム分野でまともな性能を発揮することは不可能でした。ディープラーニングの登場後、評価関数の部分をディープニューラルネットワークで置き換える流れが出てきました。加えて、深層強化学習と従来のゲーム木の探索、またその他のディープラーニングを使った画像認識や系列処理の手法を取り入れることでゲームAIは飛躍的な性能向上を遂げました。その結果、いくつものゲームで人間のトッププレーヤーを破っています。ここでは深層強化学習を応用した代表的なゲームAIを解説します。
囲碁や将棋、チェスなどのボードゲームは、行動を選択する時点で、盤面の状態や相手の持ち駒などのゲームに関する情報が全てプレーヤー側から把握できるゲームです。これに加えて、一方が勝てば他方が負けるゼロ和性、偶然の要素がない確定性という性質を満たすゲームは2人完全情報確定ゼロ和ゲームとも呼ばれ、ゲーム木を全て展開することで必勝法を見つけることができます。しかし、これを現実的な時間で行うのは不可能であるため、ゲーム木の探索を効率化する手法が必要です。
モンテカルロ木探索と呼ばれる手法は、複数回のゲーム木の展開によるランダムシミュレーション (プレイアウト)をもとに近似的に良い打ち手を決定する手法です。2000年代前半に考案されて以降、特に囲碁AIの分野で大きな成果を残し、限定的な条件ながらもプロの棋士相手に勝利できる囲碁AIの実現に大きく貢献しました。
2016年、DeepMind社が開発したゲームAI、AlphaGo (アルファ碁)が、世界的なトップ囲碁棋士であるイ・セドル九段に囲碁で勝利し、世界に衝撃を与えました。人工知能が大きく注目されるきっかけともなった象徴的なAIであるAlphaGoですが、技術的には、モンテカルロ木探索に深層強化学習の手法を組み合わせて圧倒的な強さに到達しています。
モンテカルロ木探索では、探索範囲を決定するために、有望そうな打ち手を評価する必要があります。この打ち手を評価するために、AlphaGoでは図6.22 に示すような盤面から勝率を計算するバリューネットワークや、ポリシーネットワークと呼ばれるディープニューラルネットワークが用いられています。これらのネットワークの学習には人間の棋譜のデータを使った教師あり学習や、複製したAlphaGoとの自己対戦 (self-play) で獲得された経験を使って深層強化学習を行っています。
AlphaGoの発展系であるAlphaGo Zero (アルファ碁ゼロ)では、文字通り「ゼロ」から、つまり、人間の棋譜データを用いた教師あり学習は一切行わず、最初から自己対戦を行って得たデータのみで深層強化学習を行います。このやり方では、 人間の強い棋士の知識をAIに組み込めないため、直感的にはAlphaGoよりも弱体化しそうに思われます。しかし、AlphaGo Zeroは、人間の知識を一切参考にせず、このようなゼロからの自己対戦のみで、AlphaGoをも上回る強さに到達しました。
AlphaGoの完成系のゲームAIであるAlpha Zero (アルファゼロ)では、囲碁のみならず、将棋やチェスなどの分野でも、 既に人間のトッププレーヤーを超えていた多くのゲームAIを圧倒する性能を持つようになりました。Alpha Zeroも、 AlphaGo Zeroと同じく人間のデータを一切使わず、自己対戦のみで学習し、ここまでの性能に達しています。
近年の深層強化学習を用いたゲームAIの研究では、大人数のチーム戦で、リアルタイムにゲームが進行し、不完全情報ゲームであるものを対象として、トッププレーヤーを打倒できる手法の開発が行われています。このようなゲームにおける強化学習は、対戦中に操作する味方のエージェントや相手のエージェントが複数存在し、これらのエージェントの協調的な関係や競争的な関係を考慮して強化学習を行う必要があります。このような複数エージェントによる強化学習は、今までの単一エージェントによる強化学習と区別して、マルチエージェント強化学習 (Multi-Agent Reinforcement Learning、MARL) と呼ばれます。ここでは、これらの深層強化学習を用いたゲームAIのうち代表的なものを2つ紹介します。
2018年、OpenAIは、MOBA (Multiplayer Online Battle Arena) と呼ばれる多人数対戦型ゲームDota2において、世界トップレベルのプレーヤーで構成されるチームを打倒できるゲームAI、OpenAl Fiveを発表しました。OpenAI Fiveでは、ディープニューラルネットワークに、系列情報を処理するLSTMを使い、PPOと呼ばれる強化学習のアルゴリズムを使って極めて大規模な計算資源で学習した5つのエージェントのチームによって、世界トップレベルのプレーヤーに勝利を収めました。 OpenAI Fiveは、学習アルゴリズム自体は既存の単純なものを使っており、特別に新しい手法が導入されたわけではありません。特筆すべきはその学習に使った膨大な計算資源と学習時間であり、図6.23に示すように、5万個以上のCPUと1000個以上のGPUを使用して10ヶ月に及ぶ強化学習を行っています。
2019年、DeepMind社は、RTS (Real-Time Strategy) と呼ばれるゲームジャンルに属する対戦型ゲーム、スタークラフト 2において、グランドマスターという称号を持つトッププレーヤーを打倒できるゲームAI、AlphaStar (アルファスター)を発表しました。
AlphaStarは、図6.24のようにResNet、LSTM、ポインターネットワーク、トランスフォーマーなど、画像処理や自然言語処理の手法も多く取り入れたネットワークを使って学習、ゲームプレイを行います。また、強化学習時にはゲーム理論や、 自己対戦の発展系の手法を使うなど、様々な人工知能技術が巧みに組み合わされて構成されており、いわば人工知能技術の集大成的なアルゴリズムになっています。
近年では、ディープラーニングや深層強化学習を、実世界のシステムの制御に利用する取り組みも多くなされています。ここでは、ロボット制御への応用を中心に、深層強化学習をシステム制御に応用する際の課題や手法について概観します。
これまでに見てきたように、深層強化学習はゲームAIの分野で大きな成果が得られています。一方で、ロボット制御への応用を考える場合は、以下に挙げるような、対象となる実世界の性質に起因する複数の課題に対処する必要があります。
強化学習では、最も基本的な設定として、低次元で離散値の状態や行動が扱われてきました。一方で、実世界でのロボット制御では、しばしば連続値のセンサデータや制御信号を扱うため、状態や行動の適切な離散化が必要です。例えば、連続値のセンサや制御信号のデータを一定の幅で離散化するだけでは、状態や行動の数が指数的に増大するため学習が困難になるという、次元の呪い (curse of dimensionality) という問題があります。
この問題に対して、価値関数や方策を関数近似することで高次元の連続値のセンサデータや制御信号を状態や行動として扱うことができます。とくに、深層強化学習では、関数近似器としてディープニューラルネットワークを用いることで、データの特徴表現を表現できると期待されます。しかし、ディープラーニングの特徴表現学習の能力を十分に活用するためには、適切な手法の選択やモデル設計が必要になります。
まずは、状態の表現について考えてみましょう。例えば、ロボットアームを用いて位置制御を行うマニピュレーションのタスクの場合、位置に対して不変な特徴量を学習するCNNを利用するのは適切ではない可能性があります。このように、問題に対して適切な方策を学習できるように、エージェントは入力となるセンサデータから、「状態」に関する良い特徴表現を学習する必要があります。とくに、深層強化学習の文脈では、しばしば「状態」に関する特徴表現学習を指して、状態表現学習 (state representation learning) と呼ぶことがあります。
行動の表現に関しても同様のことが言えます。例えば、DQNを利用することで、状態として画像という高次元なデータを入力に利用することができるようになりましたが、出力である行動には低次元な離散値(「右」や「左」といったコマンド)が仮定されていました。そのため、ロボットが行動として関節角や台車の速度といった連続値を扱うためには、適切な離散化が必要になります。一方で、このような連続値の行動を直接出力する問題設定も存在し、連続値制御(continuous control)問題と呼ばれています。
強化学習では報酬関数の設計 (どのような状態・行動の組にどのぐらいの大きさの報酬を与えるかの設定)によって、得られる方策の挙動は大きく異なります。そのため、エージェントに解かせたいタスクに対して、適切な報酬関数を設定することが重要になります。例えば、最終状態でタスクが解けたかどうかのみを根拠とする報酬を設計することもできますが、途中の状態や行動に対する評価がないため学習が困難になる可能性があります。一方で、期待される中間的な状態や行動に対して報酬を与えることも考えられますが、与え方によってはそれらを搾取するような局所的な方策を学習してしまい、最終的にエージェントに解かせたいタスクが遂行されない可能性もあります。
実際には多くの場合で、報酬関数の設計と学習された方策の挙動の確認を繰り返して、適切に学習が行われるように報酬関数の作り込む報酬成形(reward shaping) が必要になります。
強化学習は、データを収集しながら方策の学習を行うため、以前に集めたデータが必ずしも現在の方策の改善に寄与するとは限りません。また、明確な正解データが与えられる教師あり学習とは異なり、強化学習では、報酬や価値といった弱い情報に基づき学習を行うため、学習時に多くのサンプルが必要になる(サンプル効率が低い)と考えられています。一方で、一般的に、ロボットのハードウェアは高価なため大量に用意することが難しい上に、計算機上のシミュレーションとは異なり、実時間でしか動かせないため、データ収集のコストが高くなりがちです。そのため、効率的にデータを収集し、なるべく少ないサンプルからより良い方策を学習できるような手法の開発が肝要になります。
強化学習の問題設定上、エージェントは試行錯誤を繰り返しながら方策の学習を行います。試行錯誤の過程で、現在得られている方策よりもより良い方策を学習するためには、探索的な行動が必要になります。しかし、ロボットを用いた実世界での探索には、ロボットが故障したり、周囲の環境や人間に危害を与えたりするリスクが伴うことがあります。そのため、実世界で強化学習を行うためには、多くの場合、実行する行動の安全性を担保する仕組みを導入する必要があります。
以上に述べたような、深層強化学習を実ロボット制御に利用する際の課題に対して、学習のためのデータの収集方法に関する工夫や、人間が環境やロボットに行わせたいタスクに関する事前知識 (ドメイン知識、domain knowledge) を学習に組み込むための工夫を施すことで効率的な学習を目指す手法が提案されています。
強化学習の基本形は、エージェントが学習過程で環境内で実際に試行錯誤して方策を獲得する枠組みです。これは、オンラインのアルゴリズムと呼ばれています。一方、事前になんらかの方法によって集めたデータ(オフラインデータ)から方策を学習する手法も盛んに研究されています。中でも、模倣学習とオフライン強化学習はロボット学習領域で近年盛んに研究されているアルゴリズムです。
模倣学習(imitation learning)は、人間が期待する動作をロボットに対して教示することで、ロボットが方策を学習する問題設定です。これらの教示データはデモンストレーションと呼ばれ、ロボットを直接手で動かしたり、リモコンやVRインタフェースにより遠隔操作したりすることで作成されます。
また、オフライン強化学習 (offline reinforcement learning) は、図6.25のように、なんらかの方法によって収集された固定のデータセットがエージェントに与えられることを想定します。学習過程では、実際の環境との相互作用をすることなく、そのデータセットよりも高い性能をもつ方策を学習しようとする問題設定です。模倣学習と比較すると、オフライン強化学習は、デモンストレーションのデータが最適と考えず、各状態遷移に対して報酬の値が付与されているデータセットからの学習を行う点で異なります。
オフライン強化学習は、学習時に実環境との相互作用を必要としない問題設定であり、学習過程での実環境での探索的な行動のリスクを軽減できるため、安全性の観点から実ロボット制御への利用が期待されています。また、ログデータを収集しやすい問題設定との相性が良いため、推薦システムや対話システムなどのWebサービスの最適化への応用も見込まれています。
強化学習を用いたロボットの制御方策の学習では、実世界からデータを収集するコストが高いことが問題になります。そのため、現実世界から解きたいタスクの重要な側面を切り出して、それを計算機上で再現するシミュレーションを活用した研究も多く行われています。シミュレータで学習した方策を現実世界に転移して利用する設定はsim2realと呼ばれています。ロボット制御の場合、カメラ画像などのセンサデータや、ロボットの存在する空間の幾何的な制約や力学を、シミュレータを用いて再現することで、現実世界よりも低いコストで大量のデータを生成することができます。しかし、sim2realの設定では、 リアリティギャップ (reality gap) と呼ばれる、現実世界とシミュレータで再現された世界の間の差異が生まれてしまいます。これにより、シミュレータで学習した方策を実世界に転移した際、性能を低下させる大きな原因になることがあります。
そのため、多くのsim2realの研究や応用では、シミュレータの各種パラメータ(例えば、物体の大きさなどの幾何的なパラメータや、摩擦などの力学的なパラメータ、光源、テクスチャなどのセンサデータに関するパラメータなど)をランダムに設定した複数のシミュレータを用いて生成したデータから学習するドメインランダマイゼーション (domain randomization) が活用されています。例えば、2019年にOpenAIは、5本指のロボットハンドの中でルービックキューブを解くタスクに関して、テクスチャや光源などの画像的な特徴や、摩擦といった力学的なパラメータのランダマイゼーションを活用して、実世界での追加学習なしに強化学習で頑健な方策を獲得する研究を公開し話題を呼びました。
人間が環境の性質やタスクの解き方に関する何らかの事前知識を持っていることが多くあります。従来のロボット制御手法は、このような様々な問題に共通する幾何学や力学的な知見や法則を活用し、解こうとしているタスクをモデル化して開発されてきました。一方で、実応用上は、このような人間の事前知識のみでは簡単にはモデル化できない部分がある場合も数多く存在します。
そこで、図6.26のように、従来のロボット制御で用いられてきたような基本的な制御モジュールの出力と、実際にロボットがタスクを行う環境における最適な方策との差分を強化学習によって学習することを目指す残差強化学習 (residual reinforcement learning) と呼ばれる手法があります。残差強化学習では、強化学習の枠組みにある程度うまく動くことが事前に分かっている既存の制御手法を組み込むことができるため、サンプル効率や安全性の面で有効な手法であると考えられています。
2019年にはプリンストン大学やGoogle社などのチームが、ロボットアームを使って様々な物体を把持し、指定された箱に投げ入れることのできるTossingBotという研究を発表しました。この研究では、もし同じ投げ方をしたとしても、物体の形状や把持の仕方によって物体の運動が変わってしまうという問題に対して、運動方程式に基づくベースとなる制御モジュールの出力を調整する残差強化学習手法が用いられています。
強化学習に用いられる報酬や価値といった情報は、エージェントが利用可能な情報のほんの一部に過ぎません。より高度な知能の実現のためには、教師なし学習や教師あり学習で利用されるようなより豊富な情報を利用することが重要です。
実際に、これまでに本書で紹介した深層強化学習の手法は、基本的には環境 (状態がどのように遷移するか)に関する知識を明示的に学習しないモデルフリー (model-free) の強化学習のアルゴリズムでした。一方で、環境に関する予測モデルを明示的に活用しながら方策の学習を行う強化学習アルゴリズムは、モデルベース (model-based) 強化学習と呼ばれ、研究が進められています(図6.27)。
環境のモデルの学習を伴うモデルベースの深層強化学習手法を用いると、モデルフリーの手法に比べてサンプル効率が向上するという報告がされており、実ロボット制御の強化学習における今後の応用が期待されています。特に「エージェントが、 得られる情報を元に自身の周りの世界に関する予測モデルを学習して、方策の学習に活用する」枠組みは、世界モデル (world model) と総称されています。世界モデルに関連する研究は数多く実施されており、今後、実世界での知能を実現する上で重要な概念の1つになると考えられます。
ディープラーニングは、幅広い応用先があり、「分類」するタスク以外にも応用できます。その1つである生成タスクについて見てみましょう。
ディープラーニングは、物体認識タスクなどの「分類」以外に、生成タスクにも応用されています。例えば、画像生成では、データセット (訓練データセット) から画像が持つ潜在空間を学習し、それをベクトルとして表現します。潜在空間を得ることで、そこから新しい画像を生成することができるようになります。
画像生成以外にも、データセットを音声や文章にすることで、音声生成や文章生成に発展させることもできます。
データ生成には、変分オートエンコーダ (Variational AutoEncoder、VAE) や敵対的生成ネットワーク (Generative Adversarial Network、GAN)が用いられ、画像生成ではGANに基づく手法がよい成果を残しています。
GANは2種類のネットワークで構成されており、それぞれジェネレータ (generator) とディスクリミネータ (discriminator) という名前が付けられています。両者の役割は次の通りです。
ディスクリミネータによる予測結果はジェネレータにフィードバックされます。ここで大事なのは、ジェネレータはディスクリミネータが間違えるような偽物画像をつくるように学習をしていき、ディスクリミネータは偽物をきちんと見抜けるように学習をしていくということです。すなわち、GANは図6.28のような構成で、これら2種類のネットワークを競い合わせることで、最終的には本物と見分けがつかないような偽物、すなわち新しい画像をつくりだすことを実現します。ジェネレータは絵画の贋作や偽札をつくる人、ディスクリミネータはそれを見抜く警官で、両者はイタチごっこのように競い合っているような状況に例えると理解しやすいかもしれません。
GANは、もともと(ディープ) ニューラルネットワークを用いていました。そこに畳み込みニューラルネットワークを採用したものをDCGAN (Deep Convolutional GAN) と呼びます。DCGANによって高解像度な画像の生成を可能にしています。
GANは、ランダムなベクトルから生成したデータが本物かどうかを予測していますが、このベクトルの代わりにある画像データを入力し、別の画像に変換する処理としたPix2Pixがあります。この場合、もとの画像データと変換した画像のペアが本物か偽物かを予測します。これによって、例えば昼の画像を夜の画像に変換したり、線画をカラー画像に変換したりできます。ただし、あらかじめペアの画像を学習のために用意しておかなければいけません。
画像のペアが必要ない方法としてCycle GANがあります。この方法の場合、ある画像を変換し、その変換した画像をもとの画像に再度変換します。そのとき、通常のGANのように変換した画像が本物かどうかを予測するだけでなく、元の画像と再度変換した画像が一致するように学習します。
GANやVAEは、データを一度に生成します。Diffusion Modelは、データを生成する過程を時間的な連続的な拡散のプロセスとしています。
拡散のプロセスは、画像データにノイズを加えていき、ガウス分布にする拡散過程と、ノイズから徐々にノイズを除去して画像データを生成する逆拡散過程の2つに分かれています。各プロセスでは、それぞれの処理を繰り返し行います。学習時は拡散過程を行い、データ生成時は逆拡散過程のみ行います。
Diffusion Modelで生成したデータの品質は高く、生成AIの代表的なアプローチの1つとなっています。
NeRF (Neural Radiance Fields)は、複数の視点の画像を手がかりに3次元形状を復元し、3Dシーンを生成する技術です。NeRFを用いることで、新たな視点の画像を生成することもできます。
NeRFでは、複数の画像データとそれらの視点や照明条件などの情報を用意します。そして、画像データとそれらの情報をもとに、3次元空間の各点での色や透明度を予測するネットワークを学習します。
NeRFは、非常に高品質な3次元形状を復元でき、新しい視点や照明条件下での画像を生成可能です。一方、計算リソースが必要であったり、シーンごとに学習が必要であったり、品質は入力データの質や量に強く依存します。
ディープラーニングには様々なモデルがあります。それらを幅広く活用するための方法について見てみましょう。
今や「超」深層なネットワークを学習することが可能になりましたが、それに伴い学習に必要な計算量も莫大になりました。計算量を減らすような工夫が取られているものの、もはやGPUマシンが1台や2台あったところで、太刀打ちできるものではありません。そうすると、個人にはもはや実験することは不可能ですし、企業も莫大な投資が必要となってしまいます。 ディープラーニングを用いて予測を行いたいときに必要なのは、あくまでも最適化されたネットワークの重みであり、多大な時間が必要な学習は、その重みを得るためのステップに過ぎません。ですので、もしすでに学習済みのネットワークがあるならば、それを用いれば新たに学習する必要はありません。
先に説明したネットワーク構造のモデルは、ImageNetで学習済みのモデルが公開されており、誰でも利用できるようになっています。このモデルを事前学習済みモデルまたは学習済みモデルと呼びます。事前学習済みモデルを利用すれば、実際に利用したいデータで少し学習するだけで済みます。
ImageNetのデータセットで事前学習済みモデルは、1000クラスの分類モデルです。これを利用する場合、適用したい問題のクラス数やクラスの定義が異なるかと思います。そこで、最後の出力層は適用したい問題のクラス数になるように、図6.30のように新たな出力層に変更して学習します。学習する時は、この出力層だけ初期化して学習します。このような学習の方法を転移学習と呼びます。また、出力層だけでなく、その手前に複数の全結合層などを追加する場合もあります。適用したい問題に合わせて、追加する層数を変えても問題ありません。
転移学習では、追加した層だけを学習していました。適用したい問題によって、それだけでは不十分な場合もあります。その場合は、図6.31のように追加した層だけではなく、モデルのすべての重みを更新するよう学習します。このような学習の方法をファインチューニングと言います。
転移学習やファインチューニングを行う場合、学習に用いるデータ数はそれほど多くなくても良いことが多いです。それでも数百枚程度は必要です。もっと極端に少ないデータ数、例えば数枚程度で学習する方法をFew-shot学習と呼びます。Few-shot学習には様々な方法があり、その1つとしてMAML (Model-Agnostic Meta-Learning) があります。MAMLは、モデルの重み自体を更新するのではなく、モデルの重みをどのように更新すれば良いかという学習方法自体を学習します。これをメタ学習と呼びます。
さらに少ない1つのデータで学習する方法は、One-shot学習となります。Few-shot (少ショット) 学習やOne-shot (ワンショット) 学習は、自然言語分野でもよく用いられます。ChatGPTなどの生成モデルの場合、我々が欲しい情報を得るために、指示をプロンプトとして与えます。このプロンプトに、1つまたは複数のサンプルを例題として追加します。この場合、 モデルの重みなどのパラメータは更新しません。あくまで、生成モデルが出力する際のヒントとして例題を与えるだけです。 Zero-shot (ゼロショット) 学習では、この例題を与えず指示だけ与えます。
ディープラーニングが高い精度を達成できるのは大量の学習データのおかげです。学習データには、データと共にその正解となる情報がついています。この正解を利用して学習するのが教師あり学習です。
一方で、正解となる情報をすべてのデータにつけるのはとても手間がかかります。正解のついていないデータも学習に利用する方法が半教師あり学習です。半教師あり学習では、正解のついているデータを利用して学習を行い、正解のついていないデータを評価します。そして、その結果をもとに擬似的な正解をつけます。これにより、学習に利用できるデータを増やすことができます。
半教師あり学習では、どのようにしてより正しい擬似的な正解をつけるか、またはより正しいデータを選択するかが重要となります。正しくない擬似的な正解を利用すると、精度低下の原因になります。
また、データに対してノイズを加えた変換後のデータと変換前のデータをそれぞれモデルに入力した際、同じような出力になるべきです。この変化前と変化後のデータ間の差を最小化する考え方を一致性正則化(Consistency regularization) と呼びます。
FixMatchでは、擬似的な正解ラベルと一致性正則化を組み合わせて高い精度を達成しています。この方法では、入力デー夕に対して、反転などの単純な弱いデータ拡張と変換が大きい強力なデータ拡張の2通りのデータ拡張を適用しています。そして、弱いデータ拡張を行った入力に対する出力から擬似的な正解を作成します。強いデータ拡張を行った入力に対する出力と擬似的な正解との間で一致性正則化を求めています。
自己教師あり学習では、データに対する正解を利用せずに学習します。では、どのように学習するのでしょうか。自己教師あり学習では、プレテキストタスクという人があらかじめ設定した問題を学習します。
例えば、画像認識分野の場合、入力データに異なるデータ拡張を施して、モデルに入力します。モデルが出力する特徴が類似するように学習します。これは、半教師あり学習のところで説明した一致性正則化と同じ原理です。他にもジグソーパズルのように画像をパッチに分割して並び替えたものを正しい位置に配置するような問題や、画像の一部をマスク処理して、その領域の画像を正しく生成するような問題もあります。
自然言語分野の場合、文章の一部の単語をマスク処理して、正しく単語を予測する問題や、2つの文章が連続する文章かどうかを予測する問題などがあります。
自己教師あり学習をしたモデルは、下流タスクと呼ばれる目的の問題のデータを用いてファインチューニングされます。このとき、少量のデータだけで学習できます。
転移学習やファインチューニングにより、事前学習済みモデルを特定の問題に適用することができます。さらに、認識したいクラスが増えていく場合や、認識したい環境 (ドメイン) が変わっていく場合など、適用範囲が広がることもあります。このように適用範囲が増えるごとに学習を行うことを継続学習と呼びます。継続学習では、過去に学習したクラスを正しく認識できない破壊的忘却が起きることがあります。いかに破滅的忘却が起きないようにするかは、継続学習において重要な課題です。
ディープラーニングのモデルには、画像や言語、音声など様々なデータを入力することができます。複数の形式のデータを同時に扱う方法について見てみましょう。
画像とテキストなど異なるモダリティのデータを同時に取り扱う取り組みが増えています。Image Captioningでは、画像データを入力すると、その内容を要約したテキストを出力します。反対に、Text-To-Imageのように、テキストから画像を生成することもできるようになりました。
これまで、画像とテキストは別々の分野で利用されていましたが、よく考えてみると「りんご」の写真には「りんご」というテキストが関連づけられており、同じものを指しています。よって、特徴としても同じ特徴になっても良いはずです。
CLIPでは、画像から抽出する特徴とテキストから抽出する特徴が同じようになるよう非常に大量のデータで学習します。 CLIPで抽出した特徴は、物体認識や物体検出、Visual Question Answeringなど、さまざまなタスクに利用することができます。CLIPとDiffusion Modelを用いるDALL-Eは、テキストで指定した画像を高品質に生成できるようになりました。
さらにCLIPは、学習していない新しいタスクに対しても、そのタスクの説明を与えると実行できます。これをZero-shot学習と呼びます。これは、モデルがテキストと画像の広範な関連性を捉える能力に起因しています。CLIPの登場以降、やUnified-IOなど画像とテキストの関連性を捉える特徴を抽出できるモデルが考案され、基盤モデルと呼ばれています。
ディープラーニングによる予測は「ブラックボックス」と言われていますが、その問題をどのように解決しようとしているのか、いくつか手法を見てみましょう。
ディープラーニングにより高い精度を達成できるケースが増えていますが、モデルが「どのように予測をしているのか」も考慮しておくべきです。正しい認識結果でも、その認識対象と関係ない特徴に注目している可能性もないとは言えません。予測精度が向上したからこそ、その予測の根拠が求められるようになっています。どのようにモデルの判断根拠を解釈し、説明可能にするか、ということで説明可能AI(Explainable AI) が注目されています。
モデルがどのように判断しているかを解釈するために、入力データの特徴の一部だけを与え、その時の振る舞いを線形モデルに近似するLIMEがあります。Permutation Importanceでは、入力データの特徴をランダムに入れて、振る舞いの変化をもとに特徴の寄与度を測ります。SHAPも特徴量の寄与度を測ることでモデルの解釈を行います。これらは、ディープラーニング以外の機械学習全般で利用されています。一方で、計算コストが高かったり、特徴間の相関が高かったりすると、寄与度を測るのが難しくなります。
Class Activation Mapping (CAM)は、画像認識タスクに用いるモデルの予測判断根拠を示すために「画像のどこを見ているか」を可視化します。CAMは、図6.33 のようにGlobal Average Pooling (GAP) を最終層の手前に用いたネットワークの構造をしています。GAPは、各チャネルの特徴マップについて平均値を求めます。最終層では、その値に重みをかけて各出力の値を求めます。判断根拠を可視化する際は、可視化したいクラスに対応する重みをGAP前の特徴マップに乗算し、 すべての特徴マップを足して1つのヒートマップにします。このヒートマップの中で大きな値の部分が判断根拠となります。
CAMはシンプルですが、判断根拠を可視化する層が決まっています。Grad-CAMは、図6.34のように勾配情報を用いて、指定した層における判断根拠を可視化できます。
図6.35の中央 (c) がGrad-CAMの例です。モデルが「猫」を予測した際、画像のどこを見て「猫」と予測したかをヒートマップで示しています。これにより、モデルが正しく「猫」を認識して出力していることが確認できます。
Grad-CAMは、判断根拠の可視化には勾配情報を用いるのですが、その際に勾配が大きい、すなわち出力値への影響が大きいピクセルが重要だと判断して重み付けをします。
ただし、Grad-CAMはその過程で画像が低解像度になってしまうという問題点があり、その問題点を解決するために入力値の勾配情報も用いたGuided Grad-CAMという手法もあります。図6.35の (d) がその例です。こちらは猫のどういった特徴が抽出されているかも可視化されています。
組込み機器などでディープラーニングのモデルを利用する場合、モデルのコンパクト化が必要となります。コンパクト化の方法について見てみましょう。
ディープラーニングは、ネットワークの層を深くすることで精度が向上します。しかし、計算コストが高くなるため、エッジデバイスなど計算リソースが限られた環境で扱う場合は、利用可能な計算リソースに合わせて軽量なモデルにする必要があります。
蒸留では、層が深く高精度なネットワークが学習した知識を、層が浅く軽量なニューラルネットワークへ伝える方法です。 これにより、あまり精度を損なわずにネットワークの圧縮を行うことができます。蒸留を行うことで、計算コスト減少のほかに精度向上や正則化効果、クラス数や学習データが多い場合の学習の効率化も期待できます。
蒸留では、層が深く複雑な学習済みのネットワークを教師ネットワーク、教師の学んだ知識を伝える未学習のネットワークを生徒ネットワークと呼びます。入力データに対する教師ネットワークの事後確率を正解ラベルとして、生徒ネットワークの学習を行うことで知識を伝達します。
図6.36のように、通常の学習時に用いるone-hotな正解ラベルをhard target、教師ネットワークの事後確率をsoft targetと呼びます。soft targetには正解クラス以外の事後確率が0ではなく、何かしらの値として含まれます。この正解クラス以外の値は正解クラスとの類似度と捉えることができ、このような知識の獲得が汎化能力の向上へつながっていると考えられます。
ニューラルネットワークの接続の一部を切断する、すなわち重みの値を0にする処理を枝刈りと呼びます。枝刈りの方法には、重みの値が一定より小さければ0にする方法 (マグニチュードベース)と、勾配情報を利用する手法 (勾配ベース)があります。
マグニチュードベースは、学習後の重みについて、絶対値の小さいものから順番に削除します。一方で、勾配ベースは、モデルにデータを入力して各クラスの確信度を出力します。正解クラスの確信度から誤差を逆伝播して、勾配情報から各重みの評価値を算出します。この評価値(感度とも言います)が小さいものから順番に削除します。
枝刈りは、モデル全体の学習と枝刈りを繰り返して、少しずつモデルサイズを圧縮することが多いです。いきなり多くの重みを削除してしまうと精度に悪影響を及ぼすからです。
宝くじ仮説では、モデルを学習する際に、より良い初期値 (当たりくじ)を持つサブネットワークがモデル全体の中に含まれているという考え方をしています。このサブネットワークが枝刈りしたモデルに相当します。この枝刈り後のモデルの初期値には、元のモデルの値を利用して、学習します。
従来の枝刈りでは、モデルを初期化して学習し、枝刈りを行って学習します。このとき、枝刈り後のモデルの重みは初期化せず、繰り返し更新します。一方で、宝くじ仮説では、枝刈りを行って学習する際に重みを初期値に戻します。このように、 学習と枝刈りを繰り返すよりも、重みを巻き戻した方が高い精度になることが示されています。
量子化は、重みなどのパラメータを少ないビット数で表現して、モデルを圧縮する方法です。使用するビット数を制限することでネットワークの構造を変えずにメモリ使用量を削減できます。
ディープラーニングの学習では、誤差や勾配などの値は小さいため、32ビット浮動小数点数を使用しています。一方で、 推論時はそこまで小さな値を必要としません。そこで、学習したモデルの重みを8ビット整数にして、メモリ使用量の削減を行っています。この機能は、ディープラーニングのフレームワークで採用されています。
Google社によって開発された、Atrous convolutionを採用しているセマンティックセグメンテーションのモデルとして、最も適切なものを1つ選べ。
3
セマンティックセグメンテーションについての理解を問う問題です。DeepLabV3はセマンティックセグメンテーションのモデル、VGG16とGoogLeNetは物体認識のモデル、ImageNetはデータセットです。
Fast R-CNNの説明について、最も不適切なものを1つ選べ。
1
物体検出についての理解を問う問題です。Fast R-CNNは、R-CNNを高速化した手法です。両手法で利用されているSelective Searchの利用方法がどのように違うのかを理解しておきましょう。
畳み込みニューラルネットワーク (CNN) を用いた画像認識のモデルに関する説明として、最も不適切なものを1つ選べ。
4
CNNのモデルについての理解を問う問題です。ResNetは勾配消失問題を解消できるスキップ結合を導入していることを理解しておきましょう。
以下の文章を読み、空欄 (A) (B) に最もよく当てはまるものを1つ選べ。
(A)は画像検出タスクに用いられる1手法であり、(B) セグメンテーションに分類される。(A)は特徴マップを徐々に小さくしていくエンコーダと、逆に徐々に大きくしていくデコーダの間に、Pyramid Pooling Moduleと呼ばれるモジュールを有する。
1
セグメンテーションタスクについての理解を問う問題です。セマンティックセグメンテーションとインスタンスセグメンテーションの違いについても理解しておきましょう。
以下の文章を読み、空欄に最もよく当てはまるものを1つ選べ。
LSTMで採用されている ( ) は誤差を内部にとどまらせることを目的としており、リカレントニューラルネットワーク (RNN) の課題である時間の経過とともに過去の勾配が消えてしまう問題に対応している。
3
LSTMについての理解を問う問題です。LSTMを構成するメモリセル (CEC)、各種ゲートの役割を理解しておきましょう。
A-D変換の説明として、不適切なものを1つ選べ。
2
音声認識に用いる前処理についての理解を問う問題です。A-D変換は入力信号を標本化、量子化、符号化の順に処理します。
ディープラーニングは音声認識の逆過程である音声合成においても利用されている。2016年にDeepMind社により発表されたニューラルネットワークのアルゴリズムは従来に比べて圧倒的に高い質での音声合成に成功し、AIスピーカーが人間に近い自然な言語を話すことなどに大きく寄与している。このアルゴリズムの名称として、最も適切なものを1つ選べ。
3
音声合成に用いられるモデルについての理解を問う問題です。WaveNet は音声合成の代表的なモデルです。DQNは強化学習手法、AlexNetとResNet は畳み込みニューラルネットワークのモデルです。
以下の文章を読み、空欄 (A) (B) に最もよく当てはまるものを1つ選べ。
周波数スペクトルの形状を表すものを (A) といい、音色を表す。これによって発話者の声質や発音の特徴を示し、話者の識別などを可能にする。なお、(A)を求める一般的な方法は (B) を用いるものである。
2
音声認識に用いる前処理についての理解を問う問題です。フォルマント周波数は、音声の共振周波数です。 周波数のピークをフォルマントと呼びます。
キャプション生成の説明として、最も適切なものを1つ選べ。
1
キャプション生成についての理解を問う問題です。2はOCR、3は物体検出、4はセマンティックセグメンテーションです。
BERTについて、最も不適切なものを1つ選べ。
2
BERTについての理解を問う問題です。BERTは文頭から文末までの順方向と文末から文頭までの逆方向の両方に対応した双方向の処理を行うことが特長です。
BoW (Bag-of-Words) に関する説明として、最も適切なものを1つ選べ。
1
BoWについての理解を問う問題です。BoWは語順を考慮せずに単語の出現頻度を特長ベクトルとします。
以下の文章を読み、空欄 (A) (B) に最もよく当てはまるものを1つ選べ。
音声認識に用いられるアルゴリズムの1つに (A) がある。リカレントニューラルネットワーク (RNN) を音声認識に用いる際、音声データを入力し、それに対応する (B) を出力させることで音声認識が実現できる。(A)は、どの(B) にも対応しない空文字を挿入し、同一の (B) を縮約することを行うことで、入力と出力の数を一致させることができる。
3
音声認識についての理解を問う問題です。CTCにより同じ音素が連続する場合でも1つの音素にすることができます。
CAMに関する説明として、最も不適切なものを1つ選べ。
3
CAMとGrad-CAMについての理解を問う問題です。CAMにより判断根拠を可視化できる層はGAPの手前だけです。Grad-CAMはGAPを有しないモデルにも適用でき、勾配情報に対してGAPを行います。
AIシステムのエッジ提供方式における留意点についての説明として、最も不適切なものを1つ選べ。
1
AIのエッジデバイスでの処理についての理解を問う問題です。エッジデバイスで処理することにより、クラウド側の負担がなくなります。一方で、エッジデバイスのスペックやモデルの更新方法、保守運用方法を考えておく必要があります。
ディープニューラルネットワーク (DNN) のパラメータを表現するビット数を削減することでモデルを圧縮する手法として、最も適切なものを1つ選べ。
3
モデルの軽量化についての理解を問う問題です。1は大規模なモデルの知識を規模の小さなモデルに伝える技術、2はモデル内の不要なパラメータを削除する技術、4は特徴マップの値をスケーリングする技術です。