LoginSignup
1
3

More than 3 years have passed since last update.

開発・運用環境について (E資格対策)

Last updated at Posted at 2020-04-14

では書きます。

Adversarial Examples

人の目ではわからないごくわずかな摂動(変化)を加えただけで結果が大きく変わるデータ、生成手法を指します。
自動運転やセキュリティでは影響がとても大きく、対策はDefensive Distillation(蒸留を使う手法)、Gradient Masking(最後の出力だけ渡す手法)がありますとても難しいです。
下図がAdversarial Examplesの例です。

ostrich.png

引用:https://elix-tech.github.io/ja/2017/10/15/adversarial.html

次に手法の紹介をします。

FGSM

高速に生成できますが、特定のクラスへの誘導ができない手法

JSMA

任意のクラスに誤認識できる手法。

Blackbox Attack

モデルそのもの(oracle)が入らなくても攻撃できる手法の総称。

深層学習ライブラリ

フレームワークランキング

シェア1位:Tensorflow(+Keras)
シェア2位:PYTORCH(Chainerを参考にして作った)

です。

開発環境、ライブラリ

画像:OpenCV
文章の前処理:gensim
コンテナ(仮想環境):docker
形態素解析:Mecab,Juman++
サブワード:SentencePiece

フレームワークの互換性を持たせる(アプリにDeployできる):ONNX

などなど

軽量化技術

スマホなどにモデルを載せる場合も含め、Deep Learningでは基本的にサイズを小さくしたい。
そこで軽量化や、早くなる技術を紹介します。

量子化

通常DeepLearningではfloat32で計算していますが、これを1bitで計算できれば容量は1/32でかつビット演算で計算できるので高速化ができます。
つまり容量のbit数を下げる手法を指し、1bitの場合binarization(2値化)といいます。

1bitの内積計算はXNOR(掛け算)+POPCNT(CPUの命令で足し算)でできるので数十倍の高速化が見込まれています。

BinaryConnect

確率p(σ(w))で+1,1-p(σ(w))で-1にする手法。
なぜかうまくいきます。(正則化として寄与するらしいです)

Binarized Neural Networks

活性化関数も二値化する手法。
ですがこの場合勾配も計算できなくなってしまいます。
そこで以下の関数(STE:Strate Threw Estimator)を用いて計算します。

straight-through-estimator.png

引用:https://developer.smartnews.com/blog/2017/03/neural-network-quantization/

蒸留

大きいモデル(教師モデル)の出力を教師データにして別のモデル(生徒モデル)を学習させる手法。
生徒モデルは教師モデルと同じサイズか小さいサイズで行い、性能の向上やサイズの削減などが見込まれます。

なぜ性能が向上するのか、教師モデルでは正解データを0と1(Hard Target)でしか受け取れませんが、生徒モデルでは犬0.09,猫0.91(Soft Target)のようにクラス間の類似度を正解データとして受け取れるのでモデルの性能が上がるからです。

スクリーンショット-2018-08-27-20.25.39.png

引用:http://ai.deepx.co.jp/2018/09/25/%E8%92%B8%E7%95%99-%E7%AC%AC2%E5%9B%9E/

プルーニング(pruning 枝刈り)

重みが小さいものを0にする手法。

学習とpruningを繰り返すと小さいモデルでも性能を維持できます。

分散処理

大きなモデルを複数のプロセスで計算する手法を分散処理といいます。

分散処理ではデータ並列とモデル並列という2通りのアプローチがあり、
データ並列では、全プロセスに同じモデルのコピーして訓練することでバッチサイズをプロセス数倍し、学習を高速化させる手法です。例えばImageNetもあげられます。
一方でモデル並列では、1つのモデルを分割して複数のプロセスに配置し、全プロセスで協調して1つのモデルを訓練する手法です。例えば超解像度を入力とするCNNなど、1プロセス上に載りきらないサイズのモデルを訓練したい場合に用いられます。

parallelism.png

引用:https://tech.preferred.jp/ja/blog/model-parallelism-in-dnn/

GPU

DeepLearningの演算で使うハードウェア、並列処理が得意です。

参考文献
https://tech.preferred.jp/ja/blog/model-parallelism-in-dnn/

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3