第 2 回 レポート課題
(提出方法) ユニパから提出
•
プロファイル -> 課題提出のようなメニューがあるはず
•
アップロードしたファイルをダウンロードして、適切に提出できているか
“必ず”確認しておくこと!
•
提出するファイルは、後述の 2 つの課題に関する内容を含んだ .ipynb ファイル、
及びそれをエクスポートした .pdf ファイル(ファイル名に関しても後述参照)
•
締切は「
2019/01/18 23時59分59秒」! (締切を過ぎたら受け付けない!)(課題 2.1 )
誤差逆伝播法( Backpropagation algorithm )について説明せよ
(内容)
•
Jupyter-notebook の Markdown 記述(ほとんど Latex と同じ)を用いて、数式と図を用いながら、
文章で説明すること
•
特に、図を参照して、どういう状況を想定して説明しようとしているのか明確に書いておくこと
(例えば「図 1 の状況を想定している」というだけの“言いっ放し”に関しては、大きく減点する)
•
式に関しても、本文中に、「式中の記号の意味」及び「式自体の意味」を明確に記述しておくこと
(例えば「式 (1) に示す」というような“言いっ放し”は大きく減点する)
•
まとめると、全ての図、式、記号、用語は、“言いっ放し”にしないこと。というより、それらは 初出のすぐ後で、必ず説明するようにすること( 今後も役立つはず! )
•
実装までは要求していないが、実装上のテクニックや、アルゴリズムの図(フローチャートの
ようなもの)があると分かりやすい
(課題2.2)
Fashion-MNISTという画像データを対象として、60000枚の画像を用いて、多層順伝播ニューラルネットワーク
を学習し、10000枚の画像に対するテスト結果を報告せよ(誤差伝播法は学習過程で使用されている)
(準備)
Windowsであれば“Anaconda Prompt”(Anacondaと一緒にインストールされている)、Mac, Linux であれば“ターミナル”から、下記のコマンドを実行して、TensorFlowをインストールする。
• pip install -U --user pip (念のためのpipのアップデート)
• pip install --user tensorflow (CPU版をインストール、簡単なので)
その後、Jupyter-notebookを開き、下記のように、
• 学習事例(train_images, train_labels):60000枚の画像で、1つの画像は28x28=784次元のベクトル
• テスト事例(test_images, test_labels) :10000枚の画像で、1つの画像は28x28=784次元のベクトル をロードできることが確認できればOK
この学習事例、テスト事例の設定は、
絶対に変えないこと!
変えたら、この課題は
0点となる
この課題は、下記のWebページにあるTensorFlowのチュートリアルの拡張である https://www.tensorflow.org/tutorials/keras/basic_classification
(注意)Macの人は、別ファイル installation_guide_mac.pdfを参照
(僕のMacでも動作確認済み)!
(ルール、内容)
• 前のスライドの学習事例、テスト事例の設定を必ず守ること!破ればゼロ点!
• 前のスライドの設定下で、自分オリジナルの多層順伝播ニューラルネットワークを作成、学習、テストし、
その過程をコードとともに文章(Markdowm記述)で説明する
• 自分オリジナルの多層順伝播ニューラルネットワークの構成を必ず説明すること!
(何レイヤーか、各レイヤーの仕様は、何個のユニットを使っているか、活性化関数は?など)
• たたみ込みは用いないこと!次回のレポート課題なので、今回用いたらゼロ点!
(今回は、1枚の画像を784次元のベクトルとして処理すること)
• 別のデータセットで学習済みのネットワークを用いないこと!用いたらゼロ点!
• 自分が得た精度を必ず記述しておくこと!ニューラルネットワークの学習はランダム性を伴うので、
実行する度に精度が少し変わるが、一番最後に得た精度(エクスポートしたPDFに記載されている精度)
を記述する。この精度で、後述のランキングを作成する。
(その他)
• まずは、下記のページにあるチュートリアルをやってみるとよい https://www.tensorflow.org/tutorials/keras/basic_classification
• 下記のフォーマットで、提出するファイル名を決めること!
<学籍番号>_<自分オリジナルのネットワークの名前>_<精度>.ipynb(PDFファイルは、拡張子が.pdf)
例えば、学籍番号が1810370888で、ネットワークの名前をShiraNetとしたくて、得られた精度が85.012%なら、提出するのは、
1810370888_ShiraNet_85.02.ipynbと1810370888_ShiraNet_85.012.pdfである(精度は、小数点以下3桁まで)。
ネットワークの名前は、他人と被らないように、好きにつけてくれてOKだが、名前をつけたくない場合は、必ずXXXとする。
上記の例では、ファイル名が1810370888_XXX_85.012.ipynb、1810370888_XXX_85.012.pdfとなる。
• 得られた精度に基づいて、次のスライドにあるようなランキングを作成し公開する!
(そのため、自分と特定されたくない場合は、ネットワーク名をXXXとしておくこと)
• 上位5位以内のネットワークを作った学生には、ボーナスとして、レポート点数を+10点加点!
このレポートの配点は100点中の30点であるが、課題2.1, 2.2が適切に出来ていれば30点になり、
上記の+10点は加算のみ。つまり、順位が悪いからといって減点することはない!
• 参考のため、上記のチュートリアルの通りにやれば、大体87%の精度が出る。他の人が、どれだけの 精度を得ているかは、Fashion-MNISTの公式ページ(https://github.com/zalandoresearch/fashion-mnist) の真ん中以降に書かれている。ただし、標準のMacbook AirのCPU(しかも、たたみ込み、事前学習なし)
で、トップに近い精度を出すことは困難だと思われる。Advancedな人は、GPUマシンを使ってもOKだが、
その際は、レポート内に使用したGPUのスペックを記載しておくこと!
最悪、チュートリアルの ネットワークのマイナー チェンジでもOK
分類精度
チートして異常に高い精度が出していても、僕の方で、
.ipynbファイルを実行して 確認するので、ばれますよ!
繰り返しになるが、みんなが共通の学習事例を使ってネットワークを学習し、
共通のベンチマークデータ(テスト事例)でテストすることに意味があるので、
学習事例、テスト事例の設定は必ず守ること!
公開する分類精度のランキングのイメージ図
(このレポート課題で問うていること)
• 誤差逆伝播法を適切に理解しているか?特に、数式はもちろんだが、根底にある考え方をきちんと 理解しているかを重視する。
• 自分で簡単な多層順伝播ニューラルネットワークを作成、学習、テストできるか?この処理を行えるかが 重要で、分類精度のランキングは、あくまでボーナス点のためのもので、減点を対象としたものではない。
前回同様、このレポートに“完全な正解”はない。自分の思うやり方で、自由にレポートを作成すればいい!
また、僕自身も、Fashin-MNISTのデータの分類はやったことがなく、どれだけの精度が出るのか分からないので、
みなさんの分類精度報告を楽しみにしています!
(いくつかの減点対象の例)
• コードが動かない
• 課題内容に記載された項目が抜けていたり、大きく不足している
• 図、式、記号、用語が言いっ放し
• 別の人と結果の数値が全く同じで、かつ文章やコードの構造も酷似(こちらで勝手にカンニングとみなします)
特に、ニューラルネットワークの学習にはランダム性が伴うため、1人でも全く同じ精度を得ることはほぼない。
そのため、他人と精度が全く同じになることはまずない!
• 感想を書いている(「~ができてよかった。」、「頑張りたいと思う」などは、理系の文書では一切不要)
(その他)
質問があれば、以下のようなアプローチが可能である。
• 白浜([email protected])までメールする
• 白浜までメールしてアポイントメントをとる
• オフィスアワー(木曜日3,4限)にN302に来る
• 白浜研のメンバーに聞く