視覚認知計算特論 2018年度 演習その2†
課題A†
- 上記の「Gist上の...」のリンク先から gendat170430.py をダウンロードして実行しなさい.
- このプログラムは,ある3次関数にノイズをのせたデータを生成するものである.どんな3次関数を使っているかプログラムを読み解きなさい.また,どんなノイズをのせているか,関数名などを頼りに調べなさい.
- gnuplot で,x軸の範囲を [-1.5, 2.5],y軸の範囲を [-4, 8] として,元の関数と出力されたデータを重ねたグラフを描きなさい.
- n と nsig をいろいろ変えて同じことをやりなさい.それらを固定して,seed を変えて同じことをやりなさい.
課題B†
- Gist から ex02.py をダウンロードし,実行しなさい.このプログラムは,leastsquares.py および gendat170430.py を利用している.
- 実行すると表示される mean squared error (MSE) が何を表しているか,プログラムを読解しなさい.
- 実行すると,カレントディレクトリに ex02_data.txt と ex02_result.txt という二つのテキストファイルができる.これらの中身が何を表しているかプログラムを読解するとともに,
次のように gnuplot でグラフを描き,その意味を理解しなさい.
gnuplot> plot [-1.5:2.5][-4:8] "ex02_data.txt","ex02_result.txt" w l,"ex02_result.txt"u 1:3 w l
- D をいろいろ変えて,MSE の値やグラフがどのように変化するか観察しなさい.
課題C†
leastsquares.py に正則化を考慮した関数 solve3 を定義し,ex02.py を修正して実験してみよう.
- solve3 は X, y に加えて alpha という名前の引数も受け取ることにして,この値で正則化項の重み \( \alpha \) を決めるようにしよう.パラメータのうち定数の係数(バイアス項)には正則化を効かせないようにすること.
- 学習データの数およびノイズの大きさ一定の条件で,\( D \) を大きめの数に設定し,\( \alpha \) を何通りか変えて実験を行い,横軸を \( \alpha \),縦軸を学習データおよびテストデータに対する誤差としてグラフを描いてみよう.
- 余裕があれば,1つの \( \alpha \) に対してノイズ生成の乱数の種を何通りか変えて,それらの誤差の平均でグラフを描くとなおよい
- もっと余裕があれば,学習データの数を増減して同じ実験をやると傾向が変わるかどうか調べるとよい.
- 余裕があれば,真の値に対する誤差も描いてみるとよい.