CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
今回からは、数回に分けて、2018年に公開された論文「Population Based Training as a Service」、および、それに深く関連する2017年の論文「Population Based Training of Neural Networks」を紹介していきます。前者は、機械学習におけるハイパーパラメーターチューニングの新しい手法である、「Population Based Training」をクラウドサービスとして提供しようという提案で、Google Cloud Platform(GCP)のCloud Machine Learning Engine(CMLE)、特に、ハイパーパラメーターチューニング・サービスを使用している方には、親近感のわく話題かも知れません。
はじめに、機械学習におけるハイパーパラメーターチューニングを復習しておきます。機械学習というのは、なんらかの予測処理を行う数式を多数のパラメーターを含む形で用意しておき、学習用データを用いてこれらのパラメーターを最適化する、すなわち、より正解率の高い予測ができるようにパラメーターをチューニングする仕組みです。また、機械学習ではすべての処理が自動化されていて、学習データを与えるだけで、前述の数式(一般的な用語でいうと、機械学習モデル)が完成すると誤解されることもありますが、実際には、データの特性にあわせて、人間(データサイエンティスト)が試行錯誤で調整するパラメーターもたくさんあります。詳しい説明は省きますが、代表的なハイパーパラメーターには、次のようなものがあります。
・モデルの構造そのもの(レイヤー数、ノード数など)
・学習率
・ドロップアウト率
・強化学習における報酬設定
そして、機械学習の研究テーマの1つとして、「最適なハイパーパラメーターを自動的に見つけ出す仕組みを作る」というものがあります。もともと自動化できないものを自動化する、というのは奇妙な感じもしますが、たとえば、複数の値をランダムに選んでそれぞれの結果を比較するといった、「力技」を考えることはできるでしょう。これは、「ランダムサーチ」と呼ばれる、ハイパーパラメーターチューニングの立派な一手法です。
前述のランダムサーチは、容易に想像できるように「当たり外れ」の大きい手法です。もう少し洗練された手法としては、いくつかの値で試した結果を見て、次に試すべき値を推測するという方法があります。GCPのCMLEでは、この仕組みを実装したハイパーパラメーターチューニングのサービスが提供されており、図1のような設定ファイルでハイパーパラメーターの種類と探索範囲を指定すると、その中でベスト(と思われる)値を自動で見つけ出してくれます。
図1 ハイパーパラメーターチューニングの設定例
ただし、この手法は、処理に時間がかかるという課題もあります。つまり、ハイパーパラメーターにある値を設定して学習処理を実施して、その結果(モデルの正解率)を得た後に、さらに次の値で学習処理を行うということを繰り返す必要があります。ただでさえ時間のかかる学習処理を何度も繰り返すので、全体としての時間はさらに長くなります。冒頭の論文(後者)では、この状況は、図2のように描かれています。
図2 ハイパーパラメーターチューニングの課題(論文より抜粋)
実際には、複数の値を並列に試す(並列に学習する)などの工夫もなされますが、それでも、複数回の学習処理を繰り返す必要があることは変わりません。冒頭の論文のタイトルにある「Population Based Training」は、このような課題を解決する、新しいハイパーパラメーターチューニングの手法になります。
今回は、それぞれ2018年と2017年に公開された論文「Population Based Training as a Service」、および、「Population Based Training of Neural Networks」を解説する準備として、機械学習におけるハイパーパラメーターチューニングを説明しました。次回は、いよいよ、新しいハイパーパラメーターチューニングの手法である「Population Based Training」を紹介していきたいと思います。
Disclaimer:この記事は個人的なものです。ここで述べられていることは私の個人的な意見に基づくものであり、私の雇用者には関係はありません。
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes