本記事はラビットチャレンジ_深層学習day4のレポートである。
強化学習とは、報酬を最大化するための最適な行動を選択する方法を学習する機械学習の手法のこと。
強化学習を用いることで、顧客行動の予測や最適な販売戦略の立案などが可能になる。
強化学習を用いることで、ロボットがある環境下で自律的に動作することができるようになる。
強化学習を用いることで、ネットワークのトラフィック制御やサービス品質の維持などが可能になる。
強化学習においてエージェントが学習する上で、新しい情報を得る探索と、既に得られた情報を最大限に利用する利用とのバランスのことを指す。
強化学習のイメージ
強化学習において、ある状態で特定の行動を取った場合の期待報酬を表す関数のこと。
強化学習において、状態に応じて取るべき行動を決定するための関数のこと。
方策勾配法とは、方策をニューラルネットワークで表現し、勾配降下法を用いて最適化する手法のこと。
DeepMindが開発した、深層学習と強化学習を組み合わせた人工知能による囲碁のAIのこと。2016年に世界的な囲碁のトッププロ棋士に勝利し、人工知能が人間を上回ることを示した。
①教師あり学習によるRollOutPolicyとpolicynetの学習
②強化学習によるPolicyNetの学習
③強化学習によるValueNetの学習
大量の人間の対局データを用いた学習
バラバラのPolicyNetとValueNet
自己対戦による学習
1つにまとまったPolicyNetとValueNet
ResNetの導入
大量のデータを複数のGPUやコンピュータに分割し、それぞれのデバイスで並列的に学習を行う手法のこと。
モデル並列とは、大規模な深層学習モデルを複数のGPUやコンピュータに分割して並列処理を行う方法のこと。これにより、単一のGPUやコンピュータでは処理しきれないような巨大なモデルでも、複数のデバイスを使用して並列的に処理することができる。
通常のパラメータの64bit浮動小数点を32bitなど下位の精度に落とすことでメモリと演算処理の削減を行う
・計算の高速化
・省メモリ化
・精度の低下
学習済みの精度の高いモデルの知識を軽量なモデルへ継承させる手法
モデルの精度に寄与が少ないニューロンを削減することでモデルの軽量化、高速化が見込まれる
モバイルデバイスなどのリソースの制限された環境でも効率的に動作することを目的として設計されてた、畳み込みニューラルネットワークのアーキテクチャ。
畳み込み層に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'])
DenseNetは、畳み込みニューラルネットワークにおいて、層同士を密に結合することで、勾配の消失問題を解決することができる。
G検定公式テキスト 第二版 6章 7.CNNの発展形
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
G検定公式テキスト 第二版 6章 7.CNNの発展形
EfficientNetとは。モデルサイズを最適化する手法を用いた高精度な畳み込みニューラルネットワークの一つ。画像認識や物体検出、セグメンテーションなどのタスクに応用され、同じモデルサイズであるResNetを超える性能を発揮する。
EfficientNetは、モデルのサイズを最適化するために、Compound Scalingと呼ばれる手法を用いていて、ネットワークの深さ、幅、解像度の3つの要素を同時に最適化し、より小さなモデルでもより高い精度が得られるようになる。
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の発展形
画像中に存在する物体を検出するタスクのこと。コンピュータビジョンにおける重要なタスクであり、自動運転、監視カメラ、ロボティクス、医療画像処理など、様々な応用分野で利用されている。
画像をピクセル単位で分類し、各領域に物体のクラスラベルを付与する技術のこと。
特に自動運転分野において活用されており、道路、歩道、建物、車両などを正確に認識するために、セマンティックセグメンテーションが重要な役割を果たしている。
G検定公式テキスト 第二版 6章 3-3 3.セグメンテーションタスク
Mask R-CNNとは、物体検出とセマンティックセグメンテーションの両方を行うことができる、深層学習モデルの一種。R-CNNという物体検出手法を拡張したもので、ピクセル単位での物体セグメンテーションを行う機能を追加している。
Mask R-CNNはセグメンテーションと物体検出のタスクで高い精度を発揮し、医療画像解析、自動運転、ロボットビジョン、映像解析などの分野で広く活用されている。
G検定公式テキスト 第二版 6章 3-3 5.マルチタスク学習
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/)
Transformerとは、自然言語処理で使われるニューラルネットワークモデルの一つ。文章の中の単語を考慮しながら、文章全体を理解する仕組みになっている。より長い文章を処理でき、高速に処理できることが特徴で、様々な自然言語処理タスクで使われている。
BERTやGPT, T5など、Transformerを基盤とした多くの学習済みモデルが公開されている。
chatGPTのコア技術でもある。
G検定公式テキスト 第二版 6章 3.トランスフォーマー
BERTとは「Bidirectional Encoder Representations from Transformers」の略で、Googleが開発した自然言語処理のための事前学習済み言語モデルのこと。大量のテキストデータを用いて学習された双方向のTransformerベースのニューラルネットワークであり、文脈を理解した単語表現を生成することができる。
Google検索でも使用されており、BERTによって検索結果の精度が向上している。
G検定公式テキスト 第二版 6章 4 自然言語処理におけるpre-trained models
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次元グラフとして表示したもの。信号の時間的な変化や周波数成分を視覚的に表現することができる。
whisper
G検定公式テキスト 第二版 6章 1.2 音声データの扱い
CTCとは、ニューラルネットワークを使用して、音声認識や手書き文字認識などの時系列データに対するラベル付けを行うためのアルゴリズムのこと。出力シーケンスの長さと入力シーケンスの長さが異なる場合でも、ラベル付けが可能なため、音声認識などの分野でよく使用される。CTCは、ニューラルネットワークによって出力された確率分布を最適化することで、ラベル付けを行う。
G検定公式テキスト 第二版 6章 2.2.1 RNNの基本形
深層学習の生成モデルの一種で、敵対的生成ネットワークの一種。DCGANは、畳み込みニューラルネットワークを使用して、高品質な画像生成を行う。DCGANでは、生成器ネットワークに対して畳み込み層を追加することで、GANに比べてより安定した学習が可能になっている。また、DCGANは、画像生成に必要な特徴量をより自然に学習することができるため、高解像度な画像生成にも適している。
G検定公式テキスト 第二版 6章6-2.3 敵対的生成ネットワーク
データ生成タスクを行うGANの一種で、目的変数と条件変数を同時に与える。Generatorは目的変数と条件変数から新しいデータを生成し、Discriminatorは本物と生成されたデータを区別するように学習する。cGANは、画像生成タスクにおいて高い生成能力を持ち、GANよりも高品質な画像を生成することができる。また、条件変数によって生成する画像の属性を制御することができ、様々な画像編集や合成に応用される。
Pix2Pixは、コンピュータビジョンの分野で、条件付きGANモデルを使用した、画像から画像への変換タスクを実行するための手法のこと。入力画像と対応する出力画像のペアをトレーニングデータとして使用し、それらの間のマッピングを学習することで、与えられた入力画像に対応する出力画像を生成することができる。 例)スケッチ画像から写真への変換、白黒写真からカラー写真への変換、地図から衛星画像への変換
G検定公式テキスト 第二版 6章6-2.3 敵対的生成ネットワーク
行動を決める行動器を直接改善しながら方策を評価する評価器を同時に学習させるアプローチ
強化学習における深層学習ベースのアルゴリズムの一つ。多数のエージェントが非同期に独立して学習を行い、共通のニューラルネットワークを更新することで、効率的に学習を行うことができる。
A3Cの後に発表された。同期処理のためpythonでも実行しやすい。性能がA3Cに劣らないので、よく使われるようになった。
G検定公式テキスト 第二版 4-1章 4.5 方策勾配
機械学習やパターン認識の分野で、異なるデータ間の距離や類似度を計算するための手法。異なる特徴量間の関係性を分析し、異なるデータ点間の距離を正確に表現することができる。
ユークリッド距離、マンハッタン距離、チェビシェフ距離など、いくつかの距離尺度が存在するが、距離学習はこれらの距離尺度を改良することで、より正確な距離を求めることができる。
学習アルゴリズムが学習することを目的とした機械学習の一種。機械学習アルゴリズムがデータから学習するのではなく、過去の学習経験をもとに新しい学習タスクに適応する能力を獲得することを目的としている。
深層学習のモデルの開発に必要なデータ量を削減したい。
XAIは、人工知能システムが出力する意思決定や予測の理由を解明することを目的とした研究分野を指す。ブラックボックス化されているため、モデルの予測結果を信頼できないという問題を解決するために考案された。
CNNモデルが画像を分類する際に、どの部分が分類の決定に最も貢献しているかを可視化するための手法のこと。モデルの勾配情報を使用して、各画像の重要な領域をハイライト表示することができる。
任意の機械学習モデルの予測を解釈するための手法。個々の予測を説明するために、ローカルに線形モデルを作成し、そのモデルを解釈可能な方法で解釈する。
特徴量の寄与度を推定するための手法。線形モデルだけでなく、ツリーベースのモデルやニューラルネットワークでも使用できる。
G検定公式テキスト 第二版 4-1章 2-3 モデルの解釈
コンテナ仮想化技術を使用してアプリケーションを実行するためのオープンソースプラットフォームのこと。Dockerコンテナは、必要なすべての依存関係を含めたアプリケーションの完全な環境を提供し、異なる環境でアプリケーションを実行するための移植性と拡張性を提供する。Dockerは、独立したアプリケーション、マイクロサービス、データベース、Webサーバーなどのコンテナを作成でき、それらは異なるホストで簡単にデプロイでき、スケーリングも容易に行える。