# 卒論構成
## 題目: 機械学習の画像分類問題における前処理の効果
### 1. 背景
#### 1-1. 機械学習におけるデータの重要性
* 機械学習には大きめなデータセットが必要
→リソースを持っていない企業や個人は, データ収集の手間がかかる.
* ニューラルネットワークはいまだブラックボックスな点がある
→どのような前処理をすれば精度が向上するのか具体的に明らかになっていないので、探索に膨大な時間を要する
:::success
昨今, 先端IT技術の1つであるAIを形作る技術として名高い機械学習だが, 研究開発方面で結果を出せる組織は限られている. その理由として, 学習に用いるデータセットを用意できる組織が少ないところにある.画像分類タスクなら正解クラス分けを行ったり,物体検出タスクなら,バウンディングボックスをつけたり等,非常に手間と時間がかかる. しかしながら, いくら分類用モデルの構造やハイパーパラメータが最適化されていても,データが少なければ精度が落ちるし, 過学習もしやすくなる
:::
#### 1-2. データの水増しの必要性
* モデルが頑健になる(ロバスト性)
* 過学習を抑える
:::success
あえてデータに対してノイズを与えたり一部を欠損させたりすることによって,モデルのロバスト性が上がってくる. ロバスト性とは,イレギュラーなことに対する打たれ強さである. 機械学習の学習前のデータ整形段階において, データの外れ値を排除することは珍しくない. 使用するアルゴリズムにもよるが, 外れ値があると精度が落ちたりすることが多々あるからである. しかしながら集めたデータに外れ値があるということは実証実験(PoC)する際やシステムのデプロイ後に,そのようなデータが分類や回帰分析の対象として入ってくる可能性があるということである. そのような時にも高い精度を保てることはシステム的にも越えなければいけない壁であるゆえ, 機械学習におけるモデルのロバスト性は精度と同様に重視される傾向にある.
<br>
:::
## 2. 目的
画像分類問題のデータ水増しによる精度向上
### 3. 方法
#### 3-1. Deepaugment
DeepAugmentは, 画像に合わせた前処理の方針を, ベイズ最適化を使用して最適化するライブラリである.
これにより前処理プロセスが自動化され, モデルの精度,ロバスト性は向上する.
以下にDeepaugmentのフローとその図を示す.
1. データセットから何枚か取り出す
2. 取り出したデータセットを軽いモデル(以下Child Model)で学習し,検証精度を導出
3. 前処理選定器(以下Controller)がPolicyを選定
4. 選定されたPolicyに沿ってデータ加工器はデータセットを加工
5. 加工されたデータセットをChild Modelで学習し検証精度を導出
6. 検証精度を元にControllerをベイズ最適化
7. 3~6を指定回数分ループ
8. Controllerが最適なPolicyを出力
※Policy:画像加工の関数とその加工の重みの組み合わせ(以下SubPolicy)のいくつかの集合

#### 3-2. cifar10,cifar100
CIFAR-10,CIFAR-100データセットは,8000万枚の小さな画像のデータからラベルづけして取り出されたデータセットで, Alex Krizhevsky氏, Vinod Nair氏, Geoffrey Hinton氏らによって集められた.
cifar10は,32×32ピクセルのカラー画像が1クラスあたり6000枚, 10クラス分で合計60000枚のデータセットで,cifar100はcifar10に対して1クラスあたり600枚,100クラス分の画像で60000枚となっている.
以下にcifar10の各クラスごとの画像のサンプルを示す.

#### 3-3. Random Erasing
2017年頃の畳み込みニューラルネットワーク(CNN)は、膨大なパラメータにより過学習をしてしまったり、画像が乱れている時に正常に分類できないという問題があった。その頃にこのRandom Erasingも提案された. 画像のランダムな一部矩形領域をマスクするという手法である

#### 3-4.ResNet
ある層で求める最適な出力を学習するのではなく、層の入力を参照した残差関数を学習するアイデアのもと実装されたモデル。
ただ単に層を深くするだけでは精度の向上はできなかったのだが、ResNetはそれを、残差ブロックResidual BlockとShortcut Connectionという技術を用いて限界まで層を深くすることに成功した
#### 3-4-1 Residual Block
畳み込み層とShortcut Connectionの2つの枝からなっている。
畳み込みに入る前に、入る前のパラメータをIdentify関数として保持しておく、実際に畳み込みが終わったものを一旦ReLU(活性化関数)にかけた後、保持しておいた畳み込み前のパラメータと足し合わせて、再度ReLU(活性化関数)にかける。

#### 3-5. WideResNet
ResNetの特徴フィルタ数を増やすことでパラメータ数を増やしたモデル。
層が深いネットワークより(相対的に)浅くWideな(パラメータ数が多い)ネットワークの方が高精度かつ高速に学習できる.
### 4. 結果
#### 4-1. cifar10のPolicy探索結果

#### 4-1. cifar100のPolicy探索結果

#### 4-2. cifar10の結果

#### 4-3. cifar100の結果

#### 4-4. 各結果における有意性の検証
### 5. 結論