0

E資格_深層学習day4

197
0
$$$$

はじめに

本記事はラビットチャレンジ_深層学習day4のレポートである。

強化学習

強化学習とは

強化学習とは、報酬を最大化するための最適な行動を選択する方法を学習する機械学習の手法のこと。

強化学習の応用例

マーケティング

 強化学習を用いることで、顧客行動の予測や最適な販売戦略の立案などが可能になる。

ロボット制御

 強化学習を用いることで、ロボットがある環境下で自律的に動作することができるようになる。

ネットワーク管理

 強化学習を用いることで、ネットワークのトラフィック制御やサービス品質の維持などが可能になる。

探索と利用のトレードオフ

 強化学習においてエージェントが学習する上で、新しい情報を得る探索と、既に得られた情報を最大限に利用する利用とのバランスのことを指す。

強化学習のイメージ

強化学習のイメージ 強化学習のイメージ

行動価値関数

 強化学習において、ある状態で特定の行動を取った場合の期待報酬を表す関数のこと。

方策関数

 強化学習において、状態に応じて取るべき行動を決定するための関数のこと。

方策勾配法

 方策勾配法とは、方策をニューラルネットワークで表現し、勾配降下法を用いて最適化する手法のこと。

AlphaGo

AlphaGoとは

DeepMindが開発した、深層学習と強化学習を組み合わせた人工知能による囲碁のAIのこと。2016年に世界的な囲碁のトッププロ棋士に勝利し、人工知能が人間を上回ることを示した。

AlphaGoの学習ステップ

①教師あり学習によるRollOutPolicyとpolicynetの学習
②強化学習によるPolicyNetの学習
③強化学習によるValueNetの学習

AlphaGoとAlphaGo Zeroの違い

AlphaGo

大量の人間の対局データを用いた学習
バラバラのPolicyNetとValueNet

AlphaGo Zero

自己対戦による学習
1つにまとまったPolicyNetとValueNet
ResNetの導入

軽量化・高速化技術

データ並列

大量のデータを複数のGPUやコンピュータに分割し、それぞれのデバイスで並列的に学習を行う手法のこと。

モデル並列

モデル並列とは、大規模な深層学習モデルを複数のGPUやコンピュータに分割して並列処理を行う方法のこと。これにより、単一のGPUやコンピュータでは処理しきれないような巨大なモデルでも、複数のデバイスを使用して並列的に処理することができる。

量子化

通常のパラメータの64bit浮動小数点を32bitなど下位の精度に落とすことでメモリと演算処理の削減を行う

メリット

・計算の高速化
・省メモリ化

デメリット

・精度の低下

蒸留

学習済みの精度の高いモデルの知識を軽量なモデルへ継承させる手法

プルーニング

モデルの精度に寄与が少ないニューロンを削減することでモデルの軽量化、高速化が見込まれる

応用技術

MobileNet

 モバイルデバイスなどのリソースの制限された環境でも効率的に動作することを目的として設計されてた、畳み込みニューラルネットワークのアーキテクチャ。
 畳み込み層にDepthwise Separable Convolutionを使用しているのが特徴。

実装

      import tensorflow as tf
from tensorflow.keras.applications import MobileNetV2
from tensorflow.keras.layers import Input, Dense, Flatten
from tensorflow.keras.models import Model

# MobileNetV2のインスタンスを作成
mobilenet = MobileNetV2(weights='imagenet', include_top=False, input_shape=(224, 224, 3))

# 全結合層を追加
x = Flatten()(mobilenet.output)
x = Dense(128, activation='relu')(x)
x = Dense(64, activation='relu')(x)
predictions = Dense(10, activation='softmax')(x)

# モデルを定義
model = Model(inputs=mobilenet.input, outputs=predictions)

# モデルをコンパイル
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
    

DenceNet

DenseNetは、畳み込みニューラルネットワークにおいて、層同士を密に結合することで、勾配の消失問題を解決することができる。

参考文献

G検定公式テキスト 第二版 6章 7.CNNの発展形

ResNet

ResNetとは

 ResNetとは、畳み込みニューラルネットワークにおいて、深い層を持つことができるようにするためにスキップ接続を取り入れたモデルである。
 ResNetは、従来のCNNとは異なり、残差ブロックと呼ばれる構造を導入することで、層を深くする際の勾配消失問題を解決することを目的としている。残差ブロックは、入力信号と出力信号の差分を計算し、それを後続の層に加算することで、層を深くしても勾配消失を防ぐことができる。

実装演習

      model = tf.keras.Sequential([
    tf.keras.layers.InputLayer(input_shape=(224, 224, 3)),
    hub.KerasLayer("https://tfhub.dev/google/bit/s-r50x3/1", trainable=True),
    tf.keras.layers.Dense(class_num, activation='softmax')
])
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.00001), loss='categorical_crossentropy', metrics=['acc']) # learning_rateを調整しています。
model.summary()

history = model.fit(
    train_batches,
    epochs=EPOCHS,
    batch_size=BATCH_SIZE,
    validation_data=test_batches,
    callbacks=[
        tf.keras.callbacks.EarlyStopping(monitor='val_acc', patience=2, mode='max')
    ]
)
histories.append(history)

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(10, 8))
method_names = [
  'ResNet Transfer lerning',
  'ResNet Fine-Tune',
  'ResNetWide Transfer lerning',
  'ResNetWide Fine-Tune',
]

plot_df = pd.DataFrame()

for i, history in enumerate(histories):
    # method_name = str(method_names[i])
    method_name = str(i)
    history_df = pd.DataFrame(history.history)
    history_df['method_name'] = method_name
    history_df['Epochs'] = history_df.index
    plot_df = pd.concat([plot_df, history_df], ignore_index=True)

sns.lineplot(data=plot_df, x=plot_df['Epochs'], y='acc', hue='method_name')
val_plot_df = plot_df
val_plot_df['method_name'] = plot_df['method_name'].apply(lambda x: 'val_' + x)
sns.lineplot(data=val_plot_df, x=plot_df['Epochs'], y='val_acc', hue='method_name', linestyle='dashed')
    

image.png image.png

参考文献

G検定公式テキスト 第二版 6章 7.CNNの発展形

EfficientNet

 EfficientNetとは。モデルサイズを最適化する手法を用いた高精度な畳み込みニューラルネットワークの一つ。画像認識や物体検出、セグメンテーションなどのタスクに応用され、同じモデルサイズであるResNetを超える性能を発揮する。
 EfficientNetは、モデルのサイズを最適化するために、Compound Scalingと呼ばれる手法を用いていて、ネットワークの深さ、幅、解像度の3つの要素を同時に最適化し、より小さなモデルでもより高い精度が得られるようになる。

実装(tf hubからモデルをダウンロードする方法)

      import tensorflow as tf
import tensorflow_hub as hub
import numpy as np
import PIL.Image as Image

# モデルのダウンロード
module_url = "https://tfhub.dev/google/efficientnet/b0/feature-vector/1"
model = hub.load(module_url)

# 画像の読み込みと前処理
image_path = "test.jpg"
image = Image.open(image_path).resize((224, 224))
image = np.array(image)/255.0
image = np.expand_dims(image, axis=0)

# 予測の実行
predictions = model.predict(image)
    

参考文献

G検定公式テキスト 第二版 6章 7.CNNの発展形

物体検知とSS解説

物体検知とは

 画像中に存在する物体を検出するタスクのこと。コンピュータビジョンにおける重要なタスクであり、自動運転、監視カメラ、ロボティクス、医療画像処理など、様々な応用分野で利用されている。

SS(セマンティックセグメンテーション)とは

 画像をピクセル単位で分類し、各領域に物体のクラスラベルを付与する技術のこと。
 特に自動運転分野において活用されており、道路、歩道、建物、車両などを正確に認識するために、セマンティックセグメンテーションが重要な役割を果たしている。

参考文献

G検定公式テキスト 第二版 6章 3-3 3.セグメンテーションタスク

Mask R-CNN

Mask R-CNNとは

 Mask R-CNNとは、物体検出とセマンティックセグメンテーションの両方を行うことができる、深層学習モデルの一種。R-CNNという物体検出手法を拡張したもので、ピクセル単位での物体セグメンテーションを行う機能を追加している。
 Mask R-CNNはセグメンテーションと物体検出のタスクで高い精度を発揮し、医療画像解析、自動運転、ロボットビジョン、映像解析などの分野で広く活用されている。

参考文献

G検定公式テキスト 第二版 6章 3-3 5.マルチタスク学習

FCOS

FCOSとは

 FCOSは、物体検出のための深層学習モデルの一種。FCOSは、物体検出のための従来の手法であるtwo-stageアプローチに比べて、one-stageアプローチであるため、高速で処理が可能となっている。また、完全畳み込みネットワークを使用しており、物体が存在する確率、物体の境界ボックスの座標、物体のクラスラベルを同時に出力している。
 また、FCOSは、計算コストが少なく、物体検出のために必要なハイパーパラメータの数が少ないため、ハイパーパラメータのチューニングが容易。

参考文献・参考サイト

FCOS(物体検出)とは?( https://accum33.com/%e6%b7%b1%e5%b1%a4%e5%ad%a6%e7%bf%924fcos%e7%89%a9%e4%bd%93%e6%a4%9c%e5%87%ba%e3%81%a8%e3%81%af/8689/)

「FCOS」、RetinaNetを超えたアンカーフリー物体検出( https://medium.com/lsc-psd/fcos-%E3%82%A2%E3%83%B3%E3%82%AB%E3%83%BC%E3%83%95%E3%83%AA%E3%83%BC%E7%89%A9%E4%BD%93%E6%A4%9C%E5%87%BA%E6%B3%95-dd18147dc822#:~:text=FCOS%E3%81%AF%E3%83%95%E3%82%A3%E3%83%BC%E3%83%81%E3%83%A3%E3%83%BC%E3%83%9E%E3%83%83%E3%83%97%E4%B8%8Aground%20truth%E5%86%85%E3%81%AB%E5%85%A5%E3%82%8B,%E3%81%95%E3%82%8C%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82)

Transformer

Transformerとは

 Transformerとは、自然言語処理で使われるニューラルネットワークモデルの一つ。文章の中の単語を考慮しながら、文章全体を理解する仕組みになっている。より長い文章を処理でき、高速に処理できることが特徴で、様々な自然言語処理タスクで使われている。
 BERTやGPT, T5など、Transformerを基盤とした多くの学習済みモデルが公開されている。
 chatGPTのコア技術でもある。

参考文献

G検定公式テキスト 第二版 6章 3.トランスフォーマー

BERT

BERTとは

 BERTとは「Bidirectional Encoder Representations from Transformers」の略で、Googleが開発した自然言語処理のための事前学習済み言語モデルのこと。大量のテキストデータを用いて学習された双方向のTransformerベースのニューラルネットワークであり、文脈を理解した単語表現を生成することができる。
 Google検索でも使用されており、BERTによって検索結果の精度が向上している。

参考文献

G検定公式テキスト 第二版 6章 4 自然言語処理におけるpre-trained models

GPT

GPTとは

 GPT(Generative Pre-trained Transformer)は、自然言語処理の分野で、大規模なテキストコーパスを用いてトレーニングされたニューラルネットワークモデルの一つ。GPT, GPT2, GPT3, GPT4がある。GPT3のパラーメータ数は1750億個にのぼる。
 Transformerをベースにしており、BERTやRoBERTaなどの他のNLPモデルと同様、事前学習されたモデルをファインチューニングして特定のタスクに適用することができる。
 chatGPTはGPT3.5である。

参考文献

G検定公式テキスト 第二版 6章 4 自然言語処理におけるpre-trained models

音声認識

フーリエ変換

  時間領域で表された信号を周波数領域に変換する方法。連続時間信号に対しては連続フーリエ変換が、離散時間信号に対しては離散フーリエ変換が使用される。

窓関数

 信号の一部分に対して、特定の関数を掛けてその部分を平滑化し、周波数解像度を向上させるための手法。フーリエ変換などの信号解析において、信号を区間に分割し、それぞれに窓関数を掛けた後に解析することで、周波数解像度を向上させることができる。一般的な窓関数には、ハニング窓、ハムニング窓、ブラックマン窓などがある。

スペクトログラム

 時間軸に沿った短時間フーリエ変換を用いて、時間領域から周波数領域に変換した信号を、時間と周波数の2次元グラフとして表示したもの。信号の時間的な変化や周波数成分を視覚的に表現することができる。

代表的な音声認識のAI

whisper

参考文献

G検定公式テキスト 第二版 6章 1.2 音声データの扱い

CTC

CTC(Connectionist Temporal Classification)とは

 CTCとは、ニューラルネットワークを使用して、音声認識や手書き文字認識などの時系列データに対するラベル付けを行うためのアルゴリズムのこと。出力シーケンスの長さと入力シーケンスの長さが異なる場合でも、ラベル付けが可能なため、音声認識などの分野でよく使用される。CTCは、ニューラルネットワークによって出力された確率分布を最適化することで、ラベル付けを行う。

参考文献

G検定公式テキスト 第二版 6章 2.2.1 RNNの基本形

DCGAN

DCGANとは

 深層学習の生成モデルの一種で、敵対的生成ネットワークの一種。DCGANは、畳み込みニューラルネットワークを使用して、高品質な画像生成を行う。DCGANでは、生成器ネットワークに対して畳み込み層を追加することで、GANに比べてより安定した学習が可能になっている。また、DCGANは、画像生成に必要な特徴量をより自然に学習することができるため、高解像度な画像生成にも適している。

参考文献

G検定公式テキスト 第二版 6章6-2.3 敵対的生成ネットワーク

Conditional GAN

 データ生成タスクを行うGANの一種で、目的変数と条件変数を同時に与える。Generatorは目的変数と条件変数から新しいデータを生成し、Discriminatorは本物と生成されたデータを区別するように学習する。cGANは、画像生成タスクにおいて高い生成能力を持ち、GANよりも高品質な画像を生成することができる。また、条件変数によって生成する画像の属性を制御することができ、様々な画像編集や合成に応用される。

Pix2Pix

Pix2Pixとは

 Pix2Pixは、コンピュータビジョンの分野で、条件付きGANモデルを使用した、画像から画像への変換タスクを実行するための手法のこと。入力画像と対応する出力画像のペアをトレーニングデータとして使用し、それらの間のマッピングを学習することで、与えられた入力画像に対応する出力画像を生成することができる。 例)スケッチ画像から写真への変換、白黒写真からカラー写真への変換、地図から衛星画像への変換

参考文献

G検定公式テキスト 第二版 6章6-2.3 敵対的生成ネットワーク

A3C(Asynchronous Advantage Actor-Critic)

Actor-Critic

 行動を決める行動器を直接改善しながら方策を評価する評価器を同時に学習させるアプローチ

A3Cとは

 強化学習における深層学習ベースのアルゴリズムの一つ。多数のエージェントが非同期に独立して学習を行い、共通のニューラルネットワークを更新することで、効率的に学習を行うことができる。

A2C

A3Cの後に発表された。同期処理のためpythonでも実行しやすい。性能がA3Cに劣らないので、よく使われるようになった。

参考文献

G検定公式テキスト 第二版 4-1章 4.5 方策勾配

距離学習

距離学習とは

 機械学習やパターン認識の分野で、異なるデータ間の距離や類似度を計算するための手法。異なる特徴量間の関係性を分析し、異なるデータ点間の距離を正確に表現することができる。
 ユークリッド距離、マンハッタン距離、チェビシェフ距離など、いくつかの距離尺度が存在するが、距離学習はこれらの距離尺度を改良することで、より正確な距離を求めることができる。

メタ学習

メタ学習とは

学習アルゴリズムが学習することを目的とした機械学習の一種。機械学習アルゴリズムがデータから学習するのではなく、過去の学習経験をもとに新しい学習タスクに適応する能力を獲得することを目的としている。

メタ学習が解決したい課題

 深層学習のモデルの開発に必要なデータ量を削減したい。

Grad-CAM, LIME, SHAP

XAI(Explainable Artificial Intelligence)

XAIは、人工知能システムが出力する意思決定や予測の理由を解明することを目的とした研究分野を指す。ブラックボックス化されているため、モデルの予測結果を信頼できないという問題を解決するために考案された。

XAIの代表的なモデル

Grad-CAM

 CNNモデルが画像を分類する際に、どの部分が分類の決定に最も貢献しているかを可視化するための手法のこと。モデルの勾配情報を使用して、各画像の重要な領域をハイライト表示することができる。

LIME

 任意の機械学習モデルの予測を解釈するための手法。個々の予測を説明するために、ローカルに線形モデルを作成し、そのモデルを解釈可能な方法で解釈する。

SHAP

 特徴量の寄与度を推定するための手法。線形モデルだけでなく、ツリーベースのモデルやニューラルネットワークでも使用できる。

参考文献

G検定公式テキスト 第二版 4-1章 2-3 モデルの解釈

Docker

Dockerとは

 コンテナ仮想化技術を使用してアプリケーションを実行するためのオープンソースプラットフォームのこと。Dockerコンテナは、必要なすべての依存関係を含めたアプリケーションの完全な環境を提供し、異なる環境でアプリケーションを実行するための移植性と拡張性を提供する。Dockerは、独立したアプリケーション、マイクロサービス、データベース、Webサーバーなどのコンテナを作成でき、それらは異なるホストで簡単にデプロイでき、スケーリングも容易に行える。

投稿日:202349

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。

投稿者

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中