とらりもんHOME  Index  Search  Changes  Login

機械学習入門

(2020年度生物資源学類2年次対象「実用解析I」(春A・B学期)のページです。)

概要

2020/04/27

目標: Linuxとpythonの使い方を思い出し, 今後の学習・作業環境を構築する。

  1. 機械学習入門: 準備

2020/05/09

目標: 機械学習のサンプルプログラムを走らせてみて, 機械学習ってどういうものか, ざっくりしたイメージをつかむ。

  1. ウォームアップ
  2. 機械学習初体験
  3. レポート課題

2020/05/11

目標: 機械学習のサンプルプログラムを解読し, 自分なりに改変していじることができるようになる。うまく動かないときの対処法を習得する。

  1. サンプルプログラムの解読と改造
  2. レポート課題

2020/05/18

目標: ニューラルネットワークの概念や仕組みを理解し, 用語に慣れる。

  1. ニューラルネットワークの体験
  2. レポート課題

2020/06/01

  1. ニューラルネットワークの学習(第4章)
  2. レポート課題

2020/06/08

  1. ニューラルネットワークの学習(第5章)
  2. レポート課題
    • Affineレイヤとは何か?
    • common/layers.pyの中の, class Affineの中で, dout, self.dW, self.dbはそれぞれテキストP148あたりでは何に対応するか?
    • テキストP148の5.13式は, common/layers.pyの中でどこにどのように実装されているか?
    • 次のプリントの, 問1(1-1)から(1-18)を解け。
    • (オプション; 出来る人はやってみよう! 成績には考慮しません)次のプリントの, 問2, 問3, 問4を解け。
    • (オプション; 出来る人はやってみよう! 成績には考慮しません)common/layers.pyの中の, class Reluの中で, 誤差逆伝播はどう実装されているか?
2020_0608_jitsuyo.pdf

2020/06/15

(グループで助けあって作業すること。)

レポート課題1: グループで話し合って, グループのニックネームを決めよ。

レポート課題2: 関数f(x)=x^2+x+1の最小値を勾配法によって, 表計算ソフトで求めよ。初期値はx=10, 学習率は0.01とせよ。

レポート課題3: 課題2を表計算ソフトでなくpythonプログラムを作って実施せよ。できるだけクラスを使い, common/layers.pyに似たスタイルでプログラムを作れ。

レポート課題4: 以下の7つのデータペア(x, t)について, y=ax+bというモデルでtを近似したい(yがtの推定値)。損失関数は誤差2乗和L=堯yi-ti)^2とし, 確率的勾配降下法(SGD)でa, bを求めるpythonプログラムを作れ。初期値はa=0, b=0とする。学習率は適当に定めよ(いろいろ試そう!)。できるだけクラスを使い, common/layers.pyに似たスタイルでプログラムを作れ。すなわち, 推定モデル(y=ax+b)のクラスと, 損失関数(L)のクラスを別々にそれぞれ実装せよ。微分係数を求める際は一気に求めるのでなく, 推定モデルのクラスで∂y/∂aと∂y/∂bを実装し, 損失関数のクラスで∂L/∂yとを実装し, それらを連鎖律(合成関数の微分)で結合する形で∂L/∂aと∂L/∂bを求めよ。ミニバッチは作らず, かわりにデータを1回ずつランダムにサンプリングし, データ1つにつき1回のSGDステップを行えばよい。

x      t
1	2
2	1
3	3
4	5
5	4
6	8
7	5

結果をグラフに表示せよ。グラフには最小二乗法で求めた回帰直線もいっしょに表示せよ。 SGDtest.png

注: 最小二乗法で理論的にすぐに求まることを, なぜわざわざ確率的勾配法でやるのか? 最小二情報で理論的・解析的に解が決まるのはシンプルな関数のみである。SGDは, 複雑な関数にも使える。だからニューラルネットワークで使われるのだ。

2020/06/22

期末課題

以下の6種類の樹種の葉を分類する分類器を作ろう(行頭の数字は各樹種の識別ラベル):

  1. ヒノキ
  2. クスノキ
  3. ヤマボウシ
  4. ヤマモモ
  5. イチョウ
  6. イロハカエデ

(1) 「ゼロから学ぶDeep Learning」のコードを流用して, CNNではないニューラルネットで作れ。

(2) 「ゼロから学ぶDeep Learning」のコードを流用して, CNNで作れ。

(3) sklearn, kerasなどの機械学習ライブラリを用いて作れ。

これらの結果を相互に比較せよ。

注意:

  • 入力画像は100ピクセル x 100ピクセルのjpeg形式のカラー画像。
  • チーム内で協力してやること。グループ内で(1)〜(3)の実装を分担してもよい。
  • 訓練データは, 普通の年は学生で集めるのだが, 今年は奈佐原が提供する。
  • レポートには, 以下は必ず書くこと。
    • グループの愛称, メンバー(相棒)の氏名
    • 手法: 前処理の概要。(1)(2)(3)のソースコード(たくさんコメントつけること)。どう考えて作ったか。
    • 結果: (1)(2)(3)の精度とその比較
    • 考察: 結果からわかったこと。前処理やハイパーパラメータや構造などの影響・効果など。
    • 感想