ディープラーニングの応用例

26.画像認識

◆画像認識タスクの種類とその概要について理解する

◆代表的な画像認識モデルについて理解する

◆画像認識が実世界において、どのように活用されているか理解する

 

, , DenseNet, EfficientNet, ,  , , ,MnasNet, MobileNet, NAS (Neural Architecture Search), , , ResNet,, SENet, SSD, Swin Transformer, , , Vision Transformer, WideResNet, , 一般物体認識, ,

, , マルチスペクトラム画像

 

画像データの入力

画像は縦横にドットが並んだ2次元であるが、さらに色情報(赤・緑・青)があるため3次元である。

そのため色情報を奥行やチャネルなどと呼びます。

画像データに適した構造が 畳み込みニューラルネットワーク(CNN)

画像の縦横の位置関係を維持したまま学習できる。

 

ネオコグニトロンとLeNet

視覚野の2つの神経細胞の働きを模した発想

・単純型細胞(S細胞):画像の濃淡パターンを検出する

・複雑型細胞(C細胞):特徴の位置が変動しても同一の特徴であるとみなす

 

ネオコグニトロンは、S細胞層とC細胞層を交互に組合せた構造

LeNetは、畳み込み層とプーリング層を複数組合せた構造

 

データ拡張

◆データ拡張の基礎的な知識を理解する

  ⇒多くの学習データを用意するため、手元にあるデータから

   疑似的に別のデータを生成する。データの水増し。

◆代表的なデータ拡張手法について理解する

  ⇒上下左右にずらす、上下左右を反転する、拡大・縮小する、

   回転する、斜めにゆがめる、一部を切り取る、明るさやコントラストを変える

   ノイズを加える、

   paraphrasing:データの一部を別の値に入れ替える

   Cutout:データの一部を0にする

   Random Erasing:データの一部をランダムにする

   Mixup:2つのデータを合成する

   CutMix:CutoutとMixupを組み合わせた手法

   RandAugument:データ拡張をどのくらいの強さで行えばよいかを学習で決める

 

◆ディープラーニングにおけるデータ拡張の役割を説明できる

  ⇒学習には多くのデータが必要であるが、データを準備することが困難

   そのためすでにあるデータを水増しする

 

タスクやデータセットに応じて、使用するデータ拡張手法を選択できる

 

物体認識タスク

画像に映る代表的な物体クラスの名称を出力するタスク。

確信度が最も高い物体クラスを識別結果として出力する。

 

画像認識のコンペILSVRCでAlexNetが優勝してから層を深くしたモデルが次々と登場。

2012年 AlexNet:ジェフリーヒントンとチームSuperVisionが開発。特徴量は人が設定。

2014年 Google Net:22層、複数のフィルタサイズで畳み込み処理を行う

          インセプションモジュールを採用したモデル

     VGGが準優勝:オックスフォード大学のVGGが開発。AlexNetよりも層が深い

2015年 ResNet:Microsoftが開発。人よりも精度が高いことも。発生モデルも登場。

2017年 SENet:Attention機構を導入したモデル。

 

物体検出タスク

入力画像に映る物体クラスの識別と物体の位置を特定するタスク。

物体の位置を四角形でとらえ、左上と右下の座標を出力。

 

1段階モデル:物体の位置の特定と物体クラスの識別を同時に行う。高速

       例)YOLO、SSD

2段階モデル:物体の位置の特定後、物体クラスの識別を行う

       例)R-CNN、FPN (Feature Pyramid Network)

 

【HOG特徴量】:画像認識の特徴量の1つ。画像の輝度の勾配方向をヒストグラム化したもの。

 

【R-CNN】:物体候補領域ごとにリサイズし、CNNに入力し、サポートベクターマシン

      (SVM)によりクラス識別する

【Fast R-CNN】:R-CNNを簡略化して高速化したモデル。物体候補領域ではなく

        画像全体をCNNに入力して特徴マップを獲得する。

【Faster R-CNN】:Selective SearchをRegion Proposal Network(RPN)に置き換えて

         さらに高速化。

【YOLO(You Only Look Once)】:入力画像の各位置の物体らしさ・矩形領域を出力する

【SDD】:YOLOの後継

 

・一般物体認識:制約のない画像認識。物体を検出しそのクラスを予測する。

・特定物体認識:特定のクラスの物体を検出する(リンゴの種類予測等)

 

セグメンテーションタスク

画像の画素ごとに識別を行うタスク

【セマンティックセグメンテーション】:画像全体を対象とする

            同一クラスの物体をひとまとめにする

            集団の歩行者などを一人一人分離できない

                  

【インスタンスセグメンテーション】:物体検出した領域を対象とする

            物体検出した領域に対してセグメンテーションするため

            集団の歩行者などを一人一人分離できる

 

【パノプティックセグメンテーション】:個々の物体を分離しつつ、背景の道路や建物などは

            ひとまとめにする

 

【FCN (FullyConvolutional Netwok)】:CNNをセマンティックセグメンテーションに

            利用した方法。全結合層を用いず、畳み込み層だけで構成。

【SegNet】:畳み込み層とプーリング層を繰り返すことで小さくなった特徴マップを

      徐々に拡大する構造のネットワーク。

【U-Net】:デコーダ側で特徴マップを拡大して畳み込み処理する際、

     エンコーダ側の特徴マップを同じサイズになるように切り出して利用するモデル。

     CTやMRIなど医療の画像診断に用いられる。

【PSPNet】:エンコーダとデコーダの間にPyramid Pooling Moduleという複数の解像度で

      特徴を捉えるモジュールを持つモデル。

      画像全体や物体の大きさに応じた特徴をマルチスケールでとらえる方法。

【DeepLab】:Atrous convolutionを導入したモデル

 

姿勢推定タスク

人の頭・足・手などの間接位置を推定するタスク。

監視カメラ映像から人の異常行動を検出したり、スポーツ映像から人の動作を解析したりできる。

信頼度マップによるアプローチが有効。

 

【Open Pose】:複数の人の骨格を同時に推定できるようにした手法。

 

マルチタスク学習

複数のタスクを1つのモデルで対応することをマルチタスクという。

 

【Mask R-CNN】:物体検出とセグメンテーションを同時に行うマルチタスクモデル。

 

27.自然言語処理

◆自然言語処理タスクの種類とその概要について理解する

◆自然言語処理タスクにおける特徴表現とその手法について理解する

◆代表的な自然言語処理モデルについて理解する

  ⇒GPT と BERT(いずれも事前学習モデル)

 

◆自然言語処理が実世界において、どのように活用されているか理解する

 

, , , CEC, , CTC, , , ,, , PaLM, Seq2Seq,  , 感情分析, 機械翻訳, 形態素解析,構文解析, 質問応答, 情報検索, , , , 文書要約, , LLM (大規模言語モデル)

 

【n-gram】:文章は単語をいくつか並べたものと考えたとき、単語n-gram という。

      (nは並べる個数) 文字n-gram 音素n-gramなどもある。

 

【BoW (Bag-of-Words)】:文章を単語の集合として表現すること。

【Bag-of-n-gram】:BoWとn-gramを組合せたもの。BoWは単語の出現順序は失われるが

         出現順序が重要なこともある。そこでこれを使う。

【ワンホットベクトル】:Bowとして表現された文章も1つのベクトルとして表現できる。

 

大量の文章をBoWのベクトルで表現し、すべて並べていくと行列になる。

このように文章集合を行列とすると線形代数を用いて分析や情報の圧縮が可能になる。

 

【TF-IDF(Term Frequency-Inverse Document Frequency)】:

         どの文章にも出てくる単語か特定の文章にしか出てこない

         特徴的な単語かなどの重みを計算する手法。

 

【分散表現】:次元数の低いベクトル

【単語埋め込み】:次元数の低いベクトル

【word2vec】:単語の意味はその周辺の単語によって決まるという分布仮説を

       ニューラルネットワークとして実現したもの。

      王様ー男性+女性=女王  saw - see + eat = ate

      word2vecには次の2つの手法がある。

【スキップグラム】:ある単語を与えて周辺の単語を予測する

【CBOW(Continuous Bag of Words)】:その逆で周辺の単語からある単語を予測する

【fastText】:word2vecの延長線上のライブラリ。単語埋め込みを学習する際に

      単語を構成する部分文字列の情報も含めることで、訓練データに存在しない

      単語でも単語埋め込みを計算できるようになった。

 

【ELMo】:文脈を考慮した分散表現を得る手法

 

■自然言語モデルのベンチマーク(比較するための指標)

【GLUE】:文章同士の類似度を判定するタスクなど複数のタスクを使用して評価する

【SQuAD】:短い文章と質問を与え、どれだけ正確に解答できるかで精度を測る。

 

事前学習モデル

大規模データを使って事前学習をしたモデルを基に、特定のカテゴリの

小規模なデータを移転学習することで小規模データであっても高精度に

識別可能になる。事前学習移転学習という枠組みの先駆けは2018年に

提案されたGPTとBERTである。

 

GPT(Generative Pre Training)】:OpenAIが開発した事前学習モデル。

             大規模なコーパスを用いた言語モデル。

             トランスフォーマーのデコーダと似た構造

 

chatGPT

GPT-n

【BERT】:Googleが開発した事前学習モデル。パラメータ数は3億程

     エンコーダにトランスフォーマーを使用。

     MLM と NSP という2つのタスクを実行して事前学習をする。

     MLM(Masked Language Model):文章の一部をマスクして

              前後文から隠した文章を予測するタスク

     NSP(Next Sentence Prediction):2つの文章を与え、

                 連続した文章家を推測するタスク

 

自然言語推論:与えられた2つの文章の内容に矛盾があるか、

       一方が他方を含意するかなどを判断するタスク

質問応答:文章とこれに関する質問文が与えられ、適切な回答を選択肢から選ぶタスク

意味的類似度判定:2つの文章が与えられ、同じ意味であるかを判定するタスク

文書分類:与えられた文書がどのクラスに属すかを予測するタスク

 

28.音声処理

◆音声処理タスクの種類とその概要について理解する

◆音声処理タスクにおける特徴表現とその手法について理解する

◆代表的な音声処理モデルについて理解する

◆音声処理が実世界において、どのように活用されているか理解する

 

音声データの扱い

アナログデータである音声をコンピュータで扱うため、デジタルデータに変換

することを【A-D変換】という。

パルス符号変調(PCM)】で変換されることが一般的。

 

【高速フーリエ変換 (FFT)】:音声信号は刻々と変化するため、高速に周波数解析

       を行う手法。FFTにより音声信号は周波数スペクトルに変換される。

 

【メル尺度】:人間が感じる音の高低に合わせた尺度。1000Hzの音を1000メルと定義。

       メル尺度の差とヒトが感じる音の差が同じになるよう定義。

 

【スペクトル包絡】:音色の違いは、スペクトル包絡の違い

 

【メル周波数ケプストラム係数 (MFCC)】:スペクトル包絡を求めるための方法。

       スペクトル包絡に相当する係数列が得られ、これが音色の特徴量となる。

【フォルマント】:スペクトル包絡を求めると、いくつかの周波数でピークがある。

         そのピークをフォルマントという。

【フォルマント周波数】:フォルマントがある周波数。

 

【音韻】:言語によらず人間が発声する区別可能な音。

 

音声認識

音声認識は、与えられた音声データをテキストに変換して出力する技術。

Speech-to-Text(STT)ともいう。

 

【音素】:言語ごとに区別される音の最小単位。

【音響モデル】:単語列を発声したとき、それに対応する音素列が

        どれくらいの確率で観測されるかを表す確率モデル。

【言語モデル】:単語列がどのくらいの確率で出現するかを表す確率モデル。

        単語列の文章としての自然さを表す。

 

【隠れマルコフモデル(HMM)】:音響モデルとして標準的に用いられるモデル。

        音素ごとに学習することで様々な単語の認識に対応。

 

 【Connectionist Temporal Classification(CTC)】:出力の長さと正解の長さが

         違う場合でも処理できるようにする手法。

【N-gram】:ある単語が出現する確率を、それより1つ前の単語(N-1個)の単語

       が出現したという条件のもとで条件付き確率

       分全体の確率は、各単語の条件付き確率の積として計算する。

【感情分析】:機械がより適切な応答を返すために人間の音声の感情分析を行う必要がある。

【話者識別】:自動議事録作成では誰の発話かを推定する話者識別が必要になる。

 

音声合成

テキストを音声に変換する技術。Text-to-Speech(TTS)ともいう。

 

音声波形の合成方法2つ

【波形接続方式】:ある話者の波形をサンプリングしシミュレートする。

【パラメトリック方式】:声の高さや音色などのパラメータをHMMなどによって

            推定し合成する。

       一般にパラメトリック方式の方が合成の質が低いと言われていたが

                 ↓          

【WaveNet】:ディープラーニングを用いたパラメトリック方式の音声合成モデル。

       音声合成の質を劇的に向上させた。

 

29.深層強化学習

◆データ生成タスクの種類とその概要について理解する

  ⇒強化学習とディープラーニングを組合せたもの

   

◆代表的なデータ生成モデルについて理解する

  ⇒DeepMind社のDQNが深層強化学習の基本的な手法となっている。

 

 

◆データ生成モデルが実世界において、どのように活用されているか理解する

   ⇒ゲームロボット制御で使用されている。

 

CycleGAN, DCGAN, Diffusion Model, NeRF, Pix2Pix, 音声生成, 画像生成,

 文章生成   生成モデル  識別モデル

 

【経験再生】:エージェントが取った行動をデータとして蓄積し、学習時にランダムに

       抜き出し学習に使う手法。訓練データ間の時間的な偏りを防ぎ

       学習の安定化を図る

 

 

30.データ生成

◆データ生成タスクの種類とその概要について理解する

  ⇒ディープラーニングは物体認識タスクのみでなく、生成タスクでも活用されるようになった。

 

◆代表的なデータ生成モデルについて理解する

  ⇒敵対的生成ネットワーク (GAN) や 

     変分オートエンコーダ(VAE)   が代表的なモデル

 

◆データ生成モデルが実世界において、どのように活用されているか理解する

   ⇒音声生成, 画像生成, , 文章生成

 

, , Diffusion Model, NeRF, , 

 

入力データ ⇒ 統計分布に変換 ⇒ 潜在変数 ⇒ それに基づいてデータを生成

 

 

 

【DCGAN】:CNNを用いたモデル。高精度の画像を生成できる

      Deep Convolutional GAN

   

敵対的生成ネットワーク(GAN)

GANは次の2つのネットワークで構成されている。

 【ジェネレータ】:ランダムなベクトルを入力とし、画像を生成する

 【ディスクリミネータ】:画像を入力とし、その画像が本物かジェネレータによって

             生成されてものかを予測する

ジェネレータは、ディスクリミネータが間違えるような偽物画像を作るよう学習し、

ディスクリミネータは、偽物を見抜けるよう学習する。

 

 【Pix2Pix】:条件付き敵対的生成ネットワーク (CGAN)の1種

      白黒画像からカラー画像を生成する等

 

      ペアの画像を多数使って、敵対生成学習を行う。

 

【CycleGAN】:敵対的生成ネットワーク (GAN)の1種  男性の写真を女性の写真にする

       ペアの画像が必要ないためデータを揃えるコストが低い

 

 

Diffusion Model

データを生成する過程を時間的な連続的な拡散のプロセス 

【拡散過程】:画像データにノイズを加えていき、ガウス分布にする

【逆拡散過程】:ノイズを除去して画像データを生成する

の2つのプロセスがある。

Diffusion Modelで生成したデータの品質は高い。生成AIの代表的なアプローチ。

 

NeRF(Neural Radiance Fields)

複数の視点の画像から3次元形状を復元し、3Dシーンを生成する技術。

別視点の画像を生成することもできる。

31.転移学習・ファインチューニング

◆転移学習とファインチューニングの基礎的な知識を理解する

  ⇒

◆どのような場面やタスクにおいて、転移学習・ファインチューニングが

 効果を発揮するのか理解する

◆転移学習・ファインチューニングによって、様々なタスクにおいて

 大幅な精度向上を果たした代表的なモデルについて理解する

  

学習済みモデル

必要なのは最適化されたネットワークの重み。学習はそれを得る手段。

学習済みのネットワークがあればそれを用いればよい。

(ImageNetなどの学習済みモデル)

 

学習済みモデルを用いれば、利用するデータを少し学習するだけで済む。

 

移転学習

学習済みモデルは、適用したい問題のクラス数が異なる。

それで、最後の出力層は適用したい問題のクラス数になるように変更する

学習時は変更した出力層だけを初期化して学習する。これを移転学習という。

適用したい問題に合わせて手前の複数の層を追加することもある。

 

ファインチューニング

移転学習では追加した層だけを学習するが、それだけでは不十分な場合、

モデルのすべての重みを更新するよう学習する。これをファインチューニングという。

 

少量データでの学習

移転学習やファインチューニングを行う際、データ数は数百枚程度であることが多いが、

極端に少ないデータで学習することもある。

 

【Few-shot学習】:数枚程度のデータ数で学習すること

         MAML(Model-Agnostic Meta-Learning)もその1つ。

         重みを更新するのではなく、どのように更新すればよいかという

         学習方法自体を学習する。これをメタ学習という。

 

 

【One-shot学習】:1つのデータで学習すること。

          ChatGPTなど自然言語分野でよく用いられる。

【Zero-shot学習】:例題を与えず、指示だけ与える。

 

半教師あり学習

教師あり学習の正解を全データにつけるのは手間がかかる。

半教師あり学習では、正解付きのデータで学習し、正解が付いていないデータを評価し、

疑似的な正解を付ける。これにより学習に利用できるデータを増やす。

 

【一致性正則化】:変換前データと変換後データで出力結果の差を最小限にすること。

         生データとノイズを加えたデータをそれぞれ入力しても、

         出力結果は同じようになるべきという考え方。

 

自己教師あり学習

正解付きデータを用意する必要はなく、すべて自分で正解付き問題を作る

入力データに異なるデータ拡張を施して、出力する特徴が類似するように学習する。

 

例)文章の一部をマスクして、その単語を予測する。

  2つの文章が連続する文章かを予測する。

 

自己教師あり学習では、目的の問題データ(下流タスク)を用いて

ファインチューニングします。データは少量でよい。

 

継続学習

認識したいクラスやドメインが変わっていく場合、

適用範囲が増えるごとに学習を行うこと。

 

【破壊的忘却】:継続学習をすることで過去に学習したクラスを正しく

        認識できなくなることがある。継続学習の重要な課題。

 

32.マルチモーダル

◆マルチモーダルタスクの種類とその概要について理解する

  ⇒Image Captioning:画像データを入力すると、その内容を要約したテキストを出力する。

    Text-to-Image:テキストを入力すると、その内容の画像を生成する。

 

◆代表的なマルチモーダルモデルについて理解する

  ⇒CLIPの登場以降、Flamingo や Unified-IO など

   画像とテキストの関連性を捉える特徴を抽出できるモデルが考案されている。

 

◆マルチモーダルモデルが実世界において、どのように活用されているか理解する

 

 

【マルチモーダル】:画像とテキストなど異なるモダリティのデータを同時に取り扱うこと

 

基盤モデル

CLIPの登場以降 考案された Flamingo や Unified-IO などを基盤モデルという

画像とテキストの関連性を捉える特徴を抽出できるモデル。

 

 

【CLIP】:リンゴの画像とリンゴというテキストを入力した場合、

     画像とテキストの特徴が同じになるように学習する。

     物体認識やVisual QuestionAnsweringなど様々なタスクで利用できる。

 

【DALL-E】:CLIPとDiffusion Modelを用いるモデル。

      テキストで指定した画像を高品質に生成できる。

 

【zero-shot学習】:学習していないタスクについても、そのタスクの説明を与えれば  

         実行できる(CLIP)

 

33.モデルの解釈性

◆モデルの解釈性が必要な背景について理解する

  ⇒ディープラーニングによる予測は、ブラックボックスと言われている。

   予測精度が向上したからこそ予測の根拠が求められている。

◆解釈性が必要なユースケースについて理解する

◆解釈性の向上に寄与する代表的な手法について理解する

  ⇒説明可能AI、CAM、Grad-CAM

 

説明可能AI

正しい認識結果でも関係ない特徴に注目している可能性もあるため、

モデルがどのように予測しているかを考慮しておくべき。

 

モデルがどのように判断しているかを解釈するために以下の手法がある。

【LIME】:入力データの一部を与え、その時の振る舞いを線形モデルに近似する

【Permutation Importance】:入力データの特徴をランダムに入れて、振る舞いの

         変化をもとに特徴量の寄与度を測ることでモデルを解釈する。

【SHAP】:特徴量の寄与度を測ることでモデルを解釈する。

 

CAM

Class Activation Mapping(CAM)は、判断根拠を示すために

画像のどこを見ているかを可視化する。

CAMは、Grobal Average Pooling(GAP)を最終層の手前に用いたネットワーク。

GAPは、各チャネルの特徴マップの平均値に重みをかけて各出力の値を求める。

ヒートマップの中で大きな値が判断根拠となる。

 

Grad-CAM

CAMは判断根拠を可視化する層が限られるが、

Grad-CAMは勾配情報を用いて指定した層の判断根拠を可視化できる。

 

画像のどこを見て猫と判断したかをヒートマップで示す。

勾配が大きい=出力値への影響が大きいピクセルが重要と判断して重みづける。

問題点:低解像度になってしまう。それを解決したGuided Grad-CAMという手法もある。

 

34.モデルの軽量化

◆モデルの軽量化が必要な背景について理解する

  ⇒ディープラーニングではネットワークの層を深くすることで精度向上するが

   計算コストが高くなり、エッジデバイスなど計算リソースが限られた環境では

   軽量なモデルにする必要がある。

 

◆モデルの軽量化が必要なユースケースについて理解する

  ⇒計算リソースが限られた環境

 

◆代表的なモデル軽量化手法について理解する

  ⇒蒸留、枝刈り、量子化

 

 

蒸留

蒸留とは層が深いネットワークで学習した知識を層が浅く軽量なネットワークに伝える方法。

計算コスト減少、精度向上、正則化効果。学習の効率化などの効果が見込める。

 

 

【教師ネットワーク】:層が深く学習済みのネットワーク

【生徒ネットワーク】:教師が学んだ知識を伝える未学習のネットワーク

 

【Hard target】:one-hotの正解ラベル

【Soft target】:教師ネットワークの事後確率

 

枝刈り

枝刈りとはニューラルネットワークの接続の一部を切断するかのように

重みの値を0にする処理のこと。

学習と枝刈りを繰り返して、少しずつモデルサイズを圧縮する。

 

以下の2つがある。

・マグニチュードベース:重みの値を一程より小さければ0にする

            重みの絶対値が小さいものから削除

・勾配ベース:勾配情報を利用する手法

       データを入力して確信度を出力。正解クラスの確信度から

       誤差逆伝播して勾配情報から各重みの評価値を算出し

       評価値が小さいものから削除

 

【宝くじ仮説】:通常は学習⇒枝刈り⇒学習をする際、重みは初期化せず更新する。

        宝くじ仮説では、枝刈り後、学習する際に重みを初期化する。

        この方が精度が良くなる。

 

量子化

重みなどのパラメータを少ないビット数で表現して軽量化する方法。

使用するビット数を制限することでネットワークの構造を変えずに軽量化できる。

 

学習の際は、誤差や勾配などの値は小さいため、32ビット浮動小数点を使用

推論の際は、そこまで小さな値は不要なため、8ビット整数として軽量化している。