-
Notifications
You must be signed in to change notification settings - Fork 0
UKR
Shuri Hirowatari edited this page May 13, 2022
·
1 revision
Lecture_UKRのREADME.mdと同じ内容です.
古川研の基盤技術であるUnsupervised Kernel Regression(UKR)をスクラッチ実装する.
ミニマム
- UKRのタスク設定を理解し,アルゴリズムの各ステップで何をしているか説明できる.
- ukr.pyを自動微分で穴埋めし,UKRを動かすことができる.
- 各種パラメータ(カーネル幅など)やデータを変えて観察できる.
スタンダード
- fとEの計算を行列計算を使わずにfor文で実装する.
- ukr.pyを手動微分で実装できる. (参考資料1を見ながらやってね!)
- 人工データを独自に生成できる.(data.pyに新しい関数を追加するイメージ!)
- 実装した二つのプログラムをクロステストできる.(cross_test.pyをいじればできるはず!)
エクストラ
- 手動微分を数式的に導くことができる.(参考資料3が参考になるよ!)
- 動物データやnipsなどの実データで結果を観察できる. (動物データはsomfのここから,nipsデータはwebから読み込んでね!)
- ukr.py: みんなが実装するファイル
- data.py: 鞍型データ,螺旋型データ,sinデータを生成してくれるファイル
- visualizer.py: アニメーションのviewerのファイル(今回はみんなは実装する必要がない想定だが,余裕があれば実装しても良い)
- cross_test.py: 自分の実装が他の実装と差異がないかを確認するファイル.
sampleフォルダは答えがあるので見ないでね!!!
1.まずukr.pyの53行目までを埋めるか,一から実装するかして,以下の動画の状態(写像がぐちゃぐちゃなっている状態)まで実装する.(モデルの実装自体はうまく行っている可能性が高い.)
2.次に写像をメッシュ状に描画する. ukr.pyの55-74, 102-104のコメントアウトを外して実装する.(ここまでできれば実装完了!) ヒント:写像をメッシュ状にするには,潜在空間にメッシュ状の代表点をとって,そこからの写像を求めれば良いよね!
3.パラメータやデータを変えて観察してみる.
- エポックを増やすと潜在変数はどうなる?
- カーネルの幅を大きくすると,小さくするとどうなる?
- 正則化をつけて観察してみよう. 正則化の種類によりどんな風に学習が止まる?
- 螺旋型データ, sinデータでも試してみよう.
- 学習がうまくいかないケースはどんなケース?
- 1,2,3が終わる度にプルリクにまとめて,先輩からレビューをもらう.
- ミニマムが終わったら,これからどのメニューをするのか(例えば手動微分にチャレンジします)など,一言プルリクのコメントに記す.
- (先に早く進むより,一つ一つちゃんと理解してこなすのが大事!)
- UKRの数式集 実装の時に参考になるよ.
- UKRの論文 1章と2章は勉強になるので読んでみてね!
- 目的関数の微分式の導出 手動微分が導出される過程がわかるよ.