視覚認知計算特論 2019年度 演習その2†
課題A†
やること†
- 上記の「Gist上の...」のリンク先から gendat190428.py をダウンロードして実行しなさい.
- matplotlib が使えるひとはプログラム中のコメントを参照して一部書き換えるとよい
- gnuplot を使うひとは,プログラム実行後にコメントに指示に従ってグラフを描こう
- このプログラムは,ある3次関数にノイズをのせたデータを生成するものである.どんな3次関数を使っているかプログラムを読み解きなさい.また,どんなノイズをのせているか,関数名などを頼りに調べなさい.
- 2019-04-30 追記.削除しました →
gnuplot で,x軸の範囲を [-1.5, 2.5],y軸の範囲を [-4, 8] として,元の関数と出力されたデータを重ねたグラフを描きなさい.
報告すること/もの†
得られたグラフとその説明(点や曲線が何を表しているか)
課題B†
この課題と次の課題では,テストデータを使って次元数 \( D \) や正則化パラメータ \( \alpha \) の最適な値を決めようとしてます.授業で説明したように,未知のはずのテストデータを使うのは本当はいんちきです.
やること†
- Gist から ex02.py をダウンロードし,実行しなさい.このプログラムは,leastsquares.py および gendat190428.py を利用している.
- matplotlib が使えるひとはプログラム中のコメントを参照して一部書き換えるとよい
- gnuplot を使うひとは,プログラム実行後にコメントに指示に従ってグラフを描こう
- 実行すると表示される mean squared error (MSE) が何を表しているか,プログラムを読解しなさい.
- D を 1 から 20 まで変えたとき MSE の値やグラフがどのように変化するか観察しなさい.
- 横軸を D,縦軸を学習データおよびテストデータの MSE としてグラフを描きなさい.D が小さいときの MSE は他に比べてとても大きくなるので,縦軸の範囲を狭めてグラフを描き,D がいくつのときにテストデータの MSE が最小となっているか読み取れるようなものにすること.
報告すること/もの†
上記の最後のステップで描いたグラフと,それに対する説明.
課題C†
やること†
leastsquares.py に正則化を考慮した関数 solve3 を定義し,ex02.py を修正して実験してみよう.
- solve3 は X, y に加えて alpha という名前の引数も受け取ることにして,この値で正則化項の重み \( \alpha \) を決めるようにしよう.パラメータのうち定数の係数(バイアス項)には正則化を効かせないようにすること.
- \( D \) を 20 として,\( \alpha \) を様々に変えて実験を行い,横軸を \( \alpha \),縦軸を学習データおよびテストデータに対する誤差としてグラフを描いてみよう.
- \( \alpha \) は 0 以上の任意の値をとるので,いくつか適当な値を選んで実行 → 結果を見て範囲を変える/狭める,というステップを何回か繰り返すのがよい.とりあえず今回は [0, 10] からスタートしたらよい.
- 余裕があれば,1つの \( \alpha \) に対してノイズ生成の乱数の種を何通りか変えて,それらの誤差の平均でグラフを描くとなおよい
- もっと余裕があれば,学習データの数を増減して同じ実験をやると傾向が変わるかどうか調べるとよい.
- 余裕があれば,真の値に対する誤差も描いてみるとよい.
報告すること/もの†
描いたグラフと,それに対する説明.