今回も実践的かつ入門的な諸学者向けコンテンツを投稿していこうと考えています。
中級や上級のプログラマーにとっては少し物足りないコンテンツかとは思いますが、復習も兼ねて、またもう一度学び直したい型向けのコンテンツとして繰り返し利用していただけたら幸いです。初学者には少々難しい内容も含まれているかと思いますが、その都度ネットで検索する癖をつけると今後コーディングを行う際に引き出しとして強みになるので常に教えてもらうのではなく自力で検索することをオススメします。
では、初めてみましょう。
今後はどんどんライブラリの紹介をしていく予定なので、初学者向けコンテンツが続くと思いますがご容赦ください。
→前回の記事はこちら
Deep learningのライブラリ紹介
Deep Learningのライブラリの開発により、多くの人が人工ニューラルネットワークのアーキテクチャを設計することがより便利で簡単になりました。中でもTensorflow、Keras、Pytorchの3つのフレームワークがよく使われています。ニューラルネットワークの性能を向上させるためには、データ増強によるデータ品質の向上など、様々なアプローチがあります。しかし、データ品質はデータサイエンスの命と言っても過言ではなありません。データ品質を向上させるためには、通常、余分なコストや時間、人材リソースを必要とします。そこで、モデルのハイパーパラメータを利用していこうと考えています。
では、早速やってみましょう
1.パラメータまたはハイパーパラメータ
モデルパラメータとは、モデル内部の設定変数のことです。モデルの学習データに依存します。モデルのパラメータは、与えられたデータをモデルに当てはめることで推定できます。
モデルのハイパーパラメータは、モデルの外部にある構成変数です。ハイパーパラメータは,学習データに依存しないモデルのパラメータを見つけるためのものです。
逆に言えば,一連のハイパーパラメータを適切に設定することで,学習プロセスを最適化し,データを最大限に利用してモデルのパラメータを見つけるのです。つまり,ハイパーパラメータの値は手動で与えることができ,学習中に更新することはできないということです.しかし、パラメータはモデルの本能的な部分であり、学習中も継続的に更新されます。
不適切な例えですが、学生をモデルとみなした場合、彼の知識、性格、スキルはモデルのパラメータに近いものがあります。これらの能力や特徴を得るために彼を訓練する方法は、ハイパーパラメータとして扱うことができます。
ハイパーパラメータはモデルのパラメータの鍵であるため、私たちはハイパーパラメータに大きな注意を払う必要があります。どのようにしてモデルのハイパーパラメータを選択するのでしょうか?この問題を取り扱う際には慎重に進めないといけないですね。
2.ハイパーパラメータを調整する戦略
一般的に5種類の最適化手法があります。
マニュアル検索:我々の判断/経験に基づいて、いくつかのモデルのハイパーパラメータを選択します。その後、モデルをトレーニングし、その精度を評価し、再度プロセスを開始します。このループは、満足のいく精度が得られるまで繰り返されます。
・グリッド検索
ハイパーパラメータのグリッドを用意し、学習アルゴリズムのハイパーパラメータ空間の与えられたサブセット上の可能な組み合わせのそれぞれについて、モデルのトレーニング/テストを行います。ハイパーパラメータ最適化の伝統的な手法です。
・ランダム検索
すべての組み合わせを完全に選択するのではなく,ランダムに選択することで,その組み合わせを上書きします。これにより,ハイパーパラメータのランダムな組み合わせを選択することで,探索の反復回数を減らすことができます。
・ベイズ最適化
ブラックボックス関数のグローバル最適化のための逐次設計戦略です。過去の結果を考慮して入力値を選択することで、探索の反復回数を減らすことができます。
・進化型アルゴリズム
事前に定義されたハイパーパラメータを持つN個の機械学習モデルの集団を作成します。ベストモデルのハイパーパラメータと類似したハイパーパラメータを持つ子孫を生成し、再びN個のモデルの母集団を得ることができます。生物の進化に似たメカニズムを用いて、パラメータを順次選択、結合、変化させることで、最終的に最良のモデルだけが生き残ります。これは、環境の変化に適応できる種が生き残り、繁殖して次の世代に進むという自然淘汰のプロセスをシミュレートしています。
3.独自のアプローチ:グリッドサーチ
ここでは、グリッドサーチをよく使っています。グリッドサーチは高次元の空間を苦手としますが、アルゴリズムが扱うハイパーパラメータ値は通常互いに独立しているため、容易に並列化できることが多いです。さらに、私たちはColabというエディターでコードを書いています。このエディターでは、ブラウザ上でPythonを書いて実行することができます。
・特別な設定不要
・Colabが用意したサーバーで処理するため、本来必要なGPUが不要になる
・簡単に共有することが可能
4.KerasとTalos
最小限のコード行でニューラルネットワークをすばやく構築してテストしたい場合は、Kerasが必要です。KerasはPythonで書かれたオープンソースのニューラルネットワークライブラリで、機械ではなく人間のために設計されたAPIです。Tensorflow 2はKerasを緊密に統合し、直感的な高レベルAPIであるtf.kerasを搭載しているため、Kerasを使用するには、Kerasを直接インポートするか、tfからKerasをインポートするかの2つの方法があります。
Talosは2018年5月11日にリリースされ、その後7回のアップグレードを繰り返しています。scan-commandでTalosを使ってコードを実行すると、可能なすべての組み合わせが実験でテストされます。
重要:Talosは、ハイパーパラメータのチューニングとモデルの評価を完全に自動化することで、通常のKerasのワークフローを根本的に変えます。TalosはKerasの機能を完全に公開しており、新しい構文やテンプレートを学ぶ必要はありません。
Talosは1行のコマンドでインストールできます。
pip install talos
いかがでしたでしょうか。Kerasの畳み込みニューラルネットワークについての実装入門をご紹介させていただきました。少々わかりずらいところもあるかもしれませんが、自己補填することでより理解が深まるので冒頭でも話しましたが検索して調べることが自己育成に繋がると思います。
次回はより実践的な方法で解説をしていこうと考えているので是非心待ちにしていただければ幸いです。