プログラマーから見たラーニング戦略

この記事は、以前、noteに書いた記事です。

戦略サファリの記事で、研究部門のような探索をする部門にはラーニング・スクールが合っていそうでした。なぜなら、このラーニング・スクールは、ビジョンと漸進的な組織学習によって、ミドルマネージャーが戦略の計画性と創発性の両方を実現する現実的な方法だったからです。

実は、ラーニング・スクールにおける戦略(以降、ラーニング戦略と呼びます)は、プログラマー視点から見ると、最適化アルゴリズムにとてもよく似ているように見えます。そこで、最適化アルゴリズムと対比することで、ラーニング戦略のマネジメント上のヒントを抽出してみたいと思います。

ラーニング戦略と最適化アルゴリズムの類似性

個人的な見解ですが、ラーニング戦略は、ソフトウェアプログラムの最適化アルゴリズムとよく似ていると思っています。類似点を並べて見ると、次の表のようになります。

ラーニング戦略と最適化アルゴリズム

環境

前回、考察したように、ラーニング戦略は、全く新しい状況や時の移り変わりとともにダイナミックに変化する状況、知識が分散化した複雑な状況に適した戦略です。最適化アルゴリズムも、事前知識のない全く新しい対象や要素やデータが多すぎて複雑な状況に対して適用されます。ただし、正確にカウントしたわけではありませんが、時間に依存しない静的な状況に適用されることが多く、この点がラーニング戦略とは異なるかもしれません。

ゴール

例えば、既存製品の次世代性能のように延長線上に予測できるのであれば、ラーニング戦略ではなくゴールから逆算したプランニング戦略(プランニング・スクールの戦略)を用いたほうが合理的で効率的に研究を進めることができます。そのため、ラーニング戦略は主としてゴールが見えない状況で使うことになります。これは、最適化アルゴリズムも同様です。方程式や問題の答えが予め計算できるのであれば、わざわざ最適化アルゴリズムを使用するまでもありません。したがって、最適化アルゴリズムも、答えが見えない問題で使用することになります。

方略

複雑でゴールが見えない状況に対しては、ラーンニング戦略と最適化アルゴリズムのどちらも、漸進的に進めることで対応しています。ラーニング戦略では、試行によって学習し、学習した知識を踏まえて次の方針を決めて、また試行する、ということを繰り返します。最適化アルゴリズムでは、目的関数の値を計算し、評価して、続けるかどうかを判断するという処理を反復します。

収束と創発

ラーニング戦略と最適化アルゴリズムは、対象が異なるため、収束するものや創発されるものは異なります。しかしながら、どちらも安定した何かに収束する点では類似しています。ラーニング戦略の場合は、成功パターンに収束し、パターンが戦略として創発されます。最適化アルゴリズムは、極小値や極大値などの安定点に収束し、最適解が創発されます。

最適化アルゴリズムとは?

最適化アルゴリズムは、いろいろな場面で使われています。

最適化アルゴリズムの利用シーン

当初は、軍隊の兵站補給の最適化に端を発するオペレーションズ・リサーチの分野で発展し、数理計画法といった形で体系化されています。また、統計分析でも回帰分析や構造方程式モデリングなどは裏で最適化アルゴリズを使用しています。筆者が携わった分野で言えば、材料科学分子科学で、安定な結晶構造や分子構造を見つけるために、二次計画法の手法が使われていました。最近で言えば、機械学習ニューラルネットワークでも用いられていて、画像から人の顔を見分けるようになるのも、最適化した結果です。身近な例で言えば、商品のリコメンデーションも最適化アルゴリズムで最適な商品を選び出しています。

最適化アルゴリズムの概要

個別の問題に特化した多くの最適化アルゴリズムがありますが、比較的汎用的に用いられるのは、目的関数f(x,y)に関する微分(∂f/∂x,∂f/∂y)を使った最適化アルゴリズムです(便宜上、2次元にしています)。微分は、目的関数が表す多次元曲面の1点(x,y)における傾きを表しています。そのため、微分の方向に点(x,y)を移動させていくことで、微分値がゼロになる(傾いていない)安定点にいずれ到達します。これを、イメージにすると下図のようになります。

最適化アルゴリズム1

有名なところでは、微分の方向に点を移動させていく最急降下法(SD:Steepest-Descendent)や、微分の直交方向に点を移動させていく共役勾配法(CG:Congugate-Gradient)、二階微分で曲率を考慮した方向に点を移動させていくニュートン法などがあります。

上図の場合は、予め地図が見えているので、どのあたりに安定点があるのか予測できます。しかし、予測不能な状況ではこの地図が見えていません。喩えると、地図を持たずに山で遭難した状況を想像してもらえると分かりやすいかもしれません。

また、上図は高々2次元でしたが、データのように、関連する要因が多数にわたる場合、変数の数が増え、多次元化して様相がさらに複雑になります。

アルゴリズムの諸条件

上述の微分を用いた最適化アルゴリズムは、ものすごく大雑把にいうと、次のようなものです。

  1. 出発地点(初期値)を決める
  2. その地点の傾き(微分)を計算する
  3. 停止条件(微分値=0)を判定する
    1. 条件を満たさない場合 →傾きに沿って移動させ、2へ戻る
    2. 条件を満たす場合   →終了する

ただし、最適化アルゴリズムを作る際、いくつかの注意点があります。

1.答えに近い出発地点を選ぶ

見えていない地図が複雑な場合、複数の安定点(答え)を持つ可能性があります。上記のアルゴリズムでは、出発地点に近い答えに近づいていくため、出発地点を注意深く選ぶ必要があります。

最適化アルゴリズム5

上記の✖︎印は、全て停止条件を満たす地点です。このように、複雑な状況では複数の答えが存在する可能性があります。

2.正しい方向を定義する

たとえ、答えに近い出発地点を選べたとしても、(微分値から計算される)進むべき方向を間違えていると、思ったような答えにはたどり着けません。したがって、正しい方向を定義しておく必要があります。

最適化アルゴリズム3

3.歩幅を小さくする

たとえ、答え近い出発点を選び、正しい方向を定義したとしても、漸進的に進む歩幅が大きいと、あらぬ方向に方向転換してしまい、迷走してしまいます。少しづつ進みながら、細かく方向を確認することが必要です。

最適化アルゴリズム4

4.撤退条件を定義する

最適化アルゴリズムも万能ではなく、状況によって安定点(答え)に辿りつかない場合もあります。例えば、最適化アルゴリズムが失敗すると、2〜3地点を行ったり来たりするだけで、いつまで経っても終わらないことがあります。このようなアルゴリズムの失敗に備えて、強制終了する撤退条件を決めておく必要があります。

ラーニング戦略への応用

もし、ラーニング戦略が、最適化アルゴリズムと同様だとすると、最適化アルゴリズムを真似て、次のような戦略のアルゴリズムが考えられるかもしれません。

  1. 出発の視点(着想、疑問)を決める
  2. その視点で仮説を立てる
  3. 仮説を検証する
    1. 検証に失敗した場合 →学びから視点を少し変え、2へ戻る
    2. 検証に成功した場合 →成功パターンを確認し、終了する

ただし、最適化アルゴリズムを参考にすると、下記の注意点が存在するかもしれません。

  1. 答えに近い初期の視点を選ぶ
  2. ビジョン(方向)に沿った仮説を立てる
  3. 仮説検証を少しづつ実施する
  4. 撤退条件を定義する(失敗しても学びが得られない、等)

これらを読み替えると、ラーニング戦略マネジメントのポイントにもなると考えられます。

  1. 初期視点の良し悪しのマネジメント
  2. 仮説の方向性のマネジメント(ビジョンに沿っているか)
  3. 仮説検証の進む幅のマネジメント(飛躍しすぎない)
  4. 研究の撤退条件の定義

まとめ

複雑でダイナミックな状況では、ゴールが不明確なため、定義されたゴールから逆算して計画を立てるといったプランニング戦略が使えません。代わりに、漸進的に学習と方向転換を繰り返すラーニング戦略を使う必要がありました。

プログラマー視点で見ると、ラーニング戦略と最適化アルゴリズムには類似性があるように思われました。そこで、ラーニング戦略を最適化アルゴリズムとして理解してみることを試みました。結果として、次のようになりました。

ラーニング戦略アルゴリズム
  1. 出発の視点(着想、疑問)を決める
  2. その視点で仮説を立てる
  3. 仮説を検証する
    1. 検証に失敗した場合 →学びから視点を少し変え、2へ戻る
    2. 検証に成功した場合 →成功パターンを確認し、終了する
アルゴリズムの注意点
  1. 答えに近い初期の視点を選ぶ
  2. ビジョン(方向)に沿った仮説を立てる
  3. 仮説検証を少しづつ実施する
  4. 撤退条件を定義する(失敗しても学びが得られない、等)

コメントを残す