MathWorks機械学習・深層学習セミナーの感想

# はじめに
この記事では[MathWorks主催の機械学習・深層学習セミナー](https://jp.mathworks.com/company/events/seminars.html)に参加した際の個人的感想と、どの様な事を学んだかについて書いていきたいと思います。

# セミナーのAgenda
- MATLABとは
- MATLABを使ったデータ解析
- 役に立つリソース
- 機械学習とは
- 時系列データの機械学習・ディープラーニング
- CNNを用いた画像ディープラーニング
- ディープラーニングの各分野への応用

# まずMATLABとは？
MATRABは省略された言葉で正式名称は**Matrix Laboratory**だそうです。
そのMATRABがどんなものかというと、
>
- 対話的開発環境
- 豊富な拡張ライブラリ
- 使用目的
 - 数値解析
 - データ解析、可視化
 - アルゴリズム開発、プログラミング
 - 外部アプリケーションとの連携
**résuméより引用**


## MATRABが使われている分野
MATLABは様々な分野に使われていています。例えば、
Software and internet、Railway Systems、Energy Production、Electronics、Biological Sciencesなどがあります。
## MATRABを使用したデータ解析ワークフロー

![スクリーンショット 2018-12-12 19.18.22.png](https://qiita-image-store.s3.amazonaws.com/0/272892/fe28e248-3714-6131-33e0-402a8d0f23f0.png)
　　　　　　　　　　　　MATLAB環境を用い、データ解析の全ての工程を効率化

## 機械学習とは？
**旧来のアルゴリズム**
![スクリーンショット 2018-12-12 19.35.15.png](https://qiita-image-store.s3.amazonaws.com/0/272892/0cfcad19-bd94-740a-708e-d688ae16d70a.png)


```py
if brightness > 0.5:
    then 'Helmet'
if edge_denstiy < 4 and major_axis > 5:
    then ...
```
旧来のアルゴリズムの良いところは、**直感的な切り分けができ、計算コストが少なくてすむ**
しかし条件が複雑になってくるとコーティングが複雑に...

**機械学習**
![スクリーンショット 2018-12-12 19.43.30.png](https://qiita-image-store.s3.amazonaws.com/0/272892/cd067bc7-f5b3-14f1-c73a-411761040381.png)
機械学習では、抽出した特徴で分類器を学習する。そして**柔軟な切り分けに強い**

**教師あり学習・教師なし学習**
教師あり学習は学習データに正解ラベルを付けて学習する方法で、教師なし学習は学習データにラベルを付けないで学習する方法です。教師あり学習では典型的な問題としては**回帰・分類**がある。簡単にいうと回帰は**連続値**で、分類は**離散値**との事です。
教師なし学習は、正常なものから異常なものを発見するときの手段として用いられます。一般的に使われるのは、教師あり学習らしいです。

# 学んだ事
ここからは学んだ事を、簡単に書いていきます。

- ニューラルネットワークについて
神経細胞（ニューロン）の数学的なモデル化に起源を持つ学習器
![newron.png](https://qiita-image-store.s3.amazonaws.com/0/272892/78ad8fc6-8876-0a62-e4e8-032addf77885.png)**神経細胞　Wikipedia**より

他の神経細胞からの興奮状態が伝わり、電位のレベルが上昇する
![スクリーンショット 2018-12-12 20.23.41.png](https://qiita-image-store.s3.amazonaws.com/0/272892/09d82126-b3e2-2053-3a29-ba1066f3f96f.png)
電位のレベルが閾値を越えると自身が発火する

### LSTM(Long Short Term Memory)について
通常のRNN（Recurrent Neural Network）に「メモリセル」を導入し、入力・忘却・出力を３つのゲートで制御する様にしたもの

### 畳み込みニューラルネットワーク(CNN)
畳み込み層・プーリング層・正規化層などを積み重ねて作られた多層のニューラルネットワーク

### Semantic Segmentationについて
各ピクセルその意味（周辺のピクセルの情報）に基づいて、カテゴリ分類する手法


### 学習データの定義(SegNet)
1.ラベルのID番号とラベルのマッピング番号を決めておく

```py
classname = ['sky' 'grass' 'building' 'sidewalk'];
pixellabelID = [1 2 3 4];
```


2.画像とピクセルラベルの組を定義する

```py
imds = imageDatastore(imageDir);
pxds = pixellabelDatastore(labelDir, classname, pixellabelID);
```

3.画像とピクセルラベルの組から学習データを定義する

```py
datasource = pixellabelimageSource(imds, pxds);
```

### 学習と推論(SegNet)

1.SegNetのレイヤーを定義

```py
lgraph = segnetLayers(imageSize, numClasses, model);
```


2.データ源を指定して、学習を実行する

```py
net = trainNetwork(datasource, lgraph, options);
```

3.学習させたネットワークでセグメンテーションを行う

```py
C = semanticseg(I, net);
```
# 最後に
>In a world with infinite data, and infinite computational computational resources, there might be little need for any other technique
**résuméより引用**

講義の最後に講師の方からこの様な言葉を頂きました。意味は**ディープラーニングは無限のデータと無限の計算リソースがある世界では、ほぼ完璧な技術だろう**です。確かに今回講義を受けてみてディープラーニングには様々な可能性があり、現在でも多くの分野で活用されているという事を教わりました。しかし現実世界ではデータにも制限があり、学習するデータが曖昧なものであると正確に判定することが難しく、その曖昧な部分である欠損値を補うことが今後の発展に繋がるのではないかと思いました。
最後にここまで読んでくれてありがとうございます。急ぎで書いたので拙い部分もありますがよろしくお願いします。