Learning』民のための実装攻略ノートです。『ゼロつく1』学習の補助となるように適宜解説を加えています。本と一緒に読んでください。関数やクラスとして実装される処理の塊を細かく分解して、1つずつ処理を確認しながらゆっくりと組んでいきます。この記事は、6.5節「ハイパーパラメータの検証」の内容になります。ハイパーパラメータの最適化をPythonで試します。ハイパーパラメータの検証これまでは、重みやバイアスといったパラメータを最適化してきました。この節では、学習率などのハイパーパラメータを最適化します。検証データハイパーパラメータの最適化にあたって、訓練データとテストデータとは別に、ハイパーパラメータの性能を評価するための検証データを用意します。これまでの通り、MNISTデータセットを読み込みます。これまでに実装したレイヤなどを再実行が面倒な場合は、「common」フォルダ内の「layers.py」ファイルから読み込みます。あと次節で実装する多層ニューラルネットワーククラスも読み込んでおきます。MultiLayerNetまずは、検証データを用意するのに必要な処理を確認します。np.random.permutation()を使って、データをランダムに並び替えます。np.random.permutation()は、引数に指定した値未満の整数を重複せずにランダムに生成します。これをインデックスとして利用することで、データをシャッフルします。90]10倍したのは単にデータそのものとインデックスを見分けるためです。np.random.permutation()に配列を渡すと直接データをシャッフルできますが、訓練データとテストデータを同じ順番にシャッフルする必要があるため、上方法で行います。50]ではMNISTデータセットを読み込んで、並び替えます。10)当然データ数に変更はありません。シャッフルしたデータから検証データとして扱うデータを取り出します。訓練データの内、何割を検証データとするのかを指定します。訓練データ数との積が検証データ数になります。10)これで検証データを用意できました。ハイパーパラメータ最適化の実装MNISTデータセットを使ってハイパーパラメータの最適化を行います。decay(荷重減衰)で用いる係数の最適な値を探索します。何エポック分試行するのかと、1度に処理するデータ数を指定します。iter_per_epoch)print(max_iter)5.0250max_iter回試行することで、指定したエポック数の学習を行えます。ハイパーパラメータ最適化で行う処理の1回分だけをやってみましょう。decay(荷重減衰)の係数$\lambda$と学習率$\eta$がとる値の範囲を指定して、ランダムに値を生成します。np.random.uniform()は、第1引数以上第2引数未満の値を一様な確率に従って生成します。生成された値をそれぞれ10の指数とします。学習率print(weight_decay_lambda)print(lr)4.258343682964451e-081.2480393373210386e-05多層ニューラルネットワークMultiLayerNetのインスタンスを作成します。この例では7層のニューラルネットワークとするため、中間層のニューロン数の引数hidden_size_listに6つの値をリスト型変数で指定します(詳しくは実装時に説明します)。任意の値を指定できますが、この例では全て100とします。MNISTデータセットを用いる場合は、入力サイズinput_sizeがピクセル数の784、出力サイズoutput_sizeが数字の数10になります。(ちなみに、入出力層を含めた8つの層の間の数が7になります。)活性化レイヤにReLU関数を用いるためactivation引数にrelu、重みの初期値をHeの初期値とするためweight_init_std引数に'he'を指定します。最適化手法を確率的勾配降下法(SGD)とします。6.1節で実装した他の手法も使えます。SGD(lr=0.01)では実行します。からっぽのしょこ」こちらの一覧から参考にしてください。acc:0.926認識精度の推移をプロットします。凡例plt.show()検証データと訓練データに対する認識精度の推移ここまでがハイパーパラメータ検証における1回の処理になります。これを何度も繰り返すことで、最適な値を探索します。それを実装してみましょう!といきたいところですが私はもう疲れました。理論というよりもプログラミングの側面が強いため、解説は省略します。以下はマスターデータの「ch06」フォルダ内の「hyperparameter_optimization.py」ファイルのソースコードの出力です。decay:8.584796667654845e-08認識精度の推移:ベスト20認識精度のベスト20が描画されます(図6-24)。以上で6章の内容は終了です。!この章で何度も利用したアレをまだ実装していませんね。Learning』オライリー・ジャパン,2016年.おわりにもう、ゴールしていいよね。あと2つ本に載ってない内容を追加しました。00:04何かおかしな内容があれば、ご指摘いただけるととても嬉しいです。【R】円周の作図5.3:正射影ベクトルの導出【『スタンフォード線形代数入門』のノート】スポンサーリンクはてなブログをはじめよう!anemptyarchiveさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。