強化学習とは

ネットの随所に記述されているので、読者の方々はご存だと思うが、機械学習の種類は、教師なし学習(Unsupervised Learning)、教師あり学習(Supervised Learning)、強化学習(Reinforcement Learning)の3種類がある。

「教師あり学習」と「教師なし学習」の違いは明確である。「教師あり学習」は文字通り、教師(データ)がありそのデータに一致するように学習が行われる。それに対して、「教師なし学習」は教師データはなく、入力データの特徴量を基にグループ化を繰り返すことでクラス分類を実現するような学習を指す。では、強化学習とはどのような学習なのか?

強化学習とは、簡単に表現すると、個々の行動・判断には教師データは存在せず一連の行動(これをepisodeと呼ぶ)が完了した時点で得られる報酬(これをrewardと呼ぶ)が最大になるように方策(これをpolicyと呼ぶ)を決定する学習を指す。

周囲の状況(これをenvironmentと呼ぶ)が逐次変動したり自分が変動することで周囲環境が変わるなど、すべての組み合わせを予め知り、適した方策を教師データとして準備するのが困難な場合に利用される。強化学習の最も有名な利用事例は、AlphaGoである囲碁を「教師あり学習」で構築しようとすると、すべての盤面のパターンを網羅し、それに対する打つ手を定義する必要がある。ところが、すべての盤面のパターンは膨大な数がありそれらに対してその先の変化のすべてを予測し、打ち手を定義し学習することは困難である。それに対し、強化学習は個々の「打つ手」ではなく、その打つ手を決定する「方策」を1手、1手ごとではなく1局全体を通じて報酬を最大になるように獲得するように学習を実施する。

日本のソフト開発構造では機械学習ソフト開発は困難

昨日、機械学習ソフト開発のフローという記事を書いた。すると、偶然、「AI開発ミステリー ~そして誰も作らなかった~」 とある大手製造業の怖いハナシ (1/5)という記事を見つけた。まさに、ここに書いてあることを実際に体験しつつあったということである。

 この記事に記載されていることは、機械学習ソフト開発プロジェクトに限らずこれまでのIT開発プロジェクトで繰り返されてきた光景である。これが繰り返されてきた原因は、日本の雇用環境と密接に関係している。ユーザ企業は不定期業務であるIT開発プロジェクト向けにITに詳しい社員を雇用したくない、大手SIerは利幅を大きくしたいので同じく開発要員を定常的に雇用したくない、下請けも同様の理由で受注はするけど開発は・・・したくない。ということでピラミッド構造、つまり、小規模の開発会社またはフリーランスが開発を請負いリスクを負うという構造である。

機械学習ソフト開発も同じ構造でいけるか?というと話はそう簡単ではない、何度かこのブログでも書いたように、機械学習ソフトの開発はプログラミング技術だけでなく、高度な数学理論を理解し課題を解決可能なアルゴリズムを選定していくという要素が重要であるため、適任者が日本国内に非常に少ないという状況であるからである。現在、大学でもカリキュラムを見直しデータサイエンスに強い学生を社会に送り出していくので増えていくと考えるが、産業界の需要も増大していくので定常的な枯渇状況になるのではないかと予想される。AIが急激に進化し、AIが自ら設計、開発できるようになれば話は別であるが、その様になるまで後10〜30年はかかるであろうから、それまでどうするかというのが喫緊の課題である。

ということで、お困りの場合は大手SIerに相談するのではなく、是非弊社にご相談下さい(PRでした(笑))。

機械学習ソフト開発のフロー

先日、クラウドAPIを活用して、3週間程度で機械学習システムを開発して欲しいという案件があった。概要を聞くと、どうも依頼主が要求元ではなく、依頼主が請け負った機械学習ソフト開発案件の丸投げ先を探しているようであった。以下に示すように、受託しても費用を負担する顧客の要望を満足する精度を出すことは困難と考えたためお断りをしたが、最近の案件の傾向をみるとその様な話が増えてきている。

一般的に機械学習は、データの収集、選択、アルゴリズムの選定、データクレンジング、データ前処理などの重要な準備・設計作業があり、その後、開発と学習、評価となる。評価結果結果として評価指標が低い、精度が低いなどの当初の想定と異なる結果となった場合はデータ収集以降のフェーズを繰り返し実施することになる。

したがって、開発作業を期間を3週間と限定された場合、せいぜい、このフローを1回するだけとなり、顧客の要望を満足する精度が得られない可能性が大きくなる。

この様に開発フローだけで見ても、それほど簡単ではないことがわかるであろう、しかも、機械学習は大量のデータを学習することで精度を向上させるため大量のデータが必要となる。結果として、大量のデータのクレンジングや前処理といった学習以外の処理にも、ある程度の時間とプログラム開発が必要となるのである。

Webシステム開発のように、開発作業を画面デザイン設計、DB設計、サーバプログラミングというように複数のエンジニアに役割を分担し、顧客とフェーズ単位で仕様を詳細化しながら並行ですすめることで、短期開発を進める開発スタイルとは、機械学習ソフト開発は全く異なるものであると考える。

これらの処理や学習は数学的な理論に基づくアルゴリズムを理解したエンジニアのみが適切に設計できるものであり、その様なエンジニアの存在が現在の市場には少ないということも日本におけるAI導入推進の今後の課題として指摘されている。

一方で、そういう状況にも関わらず機械学習ソフト開発案件の発注金額の相場はWebシステム開発以下という事例が多く、現在のアプリケーション開発企業がエンジニアの育成に注力していないという状況を招いている。

この状況は、中国や韓国、ベトナム等の近隣の国のエンジニアの育成よりも遅れつつあり、数年後には機械学習ソフト開発はオフショアせざるを得ない状況になるのではないかという意見も聞かれるようになってきた。

「やってやる!」と「やれるといいなあ」の差

 いつも、このブログで書いていますし、ネットでも嫌という程、「AIが広がることで大きな変革」ということを実感します。それに伴い、ベンチャーや既存の企業で様々なチャレンジが始まっています。しかし、その”チャレンジ”もやればいいと言う訳ではありません。そんなことは、インターネットの黎明期でも経験していますし、近いところではスマホアプリの開発ブームのときにも、さんざん経験したり見たりしていると思うのですが、どうも別な技術となると、また忘れてしまい同じ様なことを繰り返すようです。それらのブームにのった事業のうまくいかない原因の一つとして、「やってやる!」と「やれるといいなあ」という自主的か他力本願的かというモチベーションの差があるのではないかと思います。

そんなことを考えるキッカケになった、先日、機械翻訳で多言語によるコンテンツ海外配信の件で相談したいという引き合いがあり、とある大手出版企業にて打ち合わせを実施した際の感想です。

昨年から知り合いを通じて相談があり、GoogleやMSの機械翻訳APIを使った配信を提案し日本語→英語の評価は昨年度やりました(営業活動の一環として)。

結果としては、元の日本語に課題があり、まだ高精度の翻訳は難しいとなりました。

今回、半年ぶりに呼ばれたのですが・・・

(A社):いろいろ検討した結果として、すでにある英文でのサイトのコンテンツを英語以外の言語に翻訳したい。精度が悪い場合に発生する既存事業への影響を回避するために、小会社のサービスとして計画したい。

(私):承知しました。それで、どのような仕様になりますか?

(A社):元の自社サイトをスピャルピングし、テキストだけをAPIで翻訳し、その結果で別サイトのコンテンツを自動生成したい。 

(私):直接英文データは入手できないのですか?

(A社):まあ、元サイトの運営も子会社なんだけど、いろいろ調整が面倒なんで、ソフトでサクッとやりたいんだよね。

(私):(絶望的にメンテナンスの筋悪いけど。。。)承知しました。できると思います。

(A社):ところでさ、単にAPIサービス使って機械翻訳するだけでは、何も残らないのでつまらないんだよね、その結果を使って独自に機械翻訳サービスとかできるようにならないの?

(私):できるとは思いますが、語彙とか精度の面でサービスとしてグローバル企業並のものになるまで膨大な費用と時間がかかります。もし本気でやるのであれば、AIに関する作業を外注すると高額になるので、社内にAIエンジニアを並行で育成した方が将来の柔軟性があるのではないでしょうか。少なくとも弊社では規模的に請負いません。(やんわりと否定)

(A社):そうなんだあ、AIエンジニアの育成についてカリキュラム持っている?

(私):外部教育機関のサービスを受けるとかを勧めます。まともに基礎からやると高レベルな数学の知識が必要になりますが、DeepLearningのフレームワークベースでとりあえずプログラムを動作させるというところから始める教育はたくさんあります。

(A社):いやー実は新しいビジネスをやる小会社つくったんだ、だから、ただAPIサービス使ってコンテンツを翻訳するだけって、上には受け良くないんだよね。なんかビジネスアイデアない?

(私):(あれあれ?会社立ち上げる前に企画無いの??)いやー特にないですね。AIを使った他の会社のサービスとかは例示・説明できますが・・・・・・・・・・・(いろいろ例示するも)

(A社):でもさ、マネタイズどうやってやるの?そこなんだよね、問題は 

(私):(そのアイデアあったら自分でやってるよ・・・・)

(A社):(とあるベンチャーのサービスを指し)そこと組んでウチのコンテンツ配信できないかなって思って打診したら、カスタマイズに8000万円要求されてさあ、高くて無理でしょ。

(私):新規サービス立ち上げは開発やPRを考えるとそれぐらいかかるのではないでしょうか?(あなたの会社大企業なんだから・・・・・・既存のビジネスモデルに相乗りするんだったら、それぐらいのリスクはとれるでしょ)

(A社):単なる、コンテンツに広告のスペース提供する広告ビジネスとかも面白くないでしょ。

(私):コンテンツホルダーという強みがあると思うので、立ち上げのハードルは低いと思いますが・・・・

(A社):いやー上の方がさ・・・インバウンド向けになんかやりたいのよ。例えば、日本に来る前の観光客に情報を提供するとか面白いと思うけど、どうやってマネタイズしたらいいかねえ。

(私):(不毛だな・・・この会話・・・ここまで約1時間・・・結論が見えないなあ)・・・・・・・

(A社):おたくの会社で、AI使ったなんかいいビジネスのアイデアないの?

(私):(この質問2度目だな・・そんなのあったら自分でやってるよ・・)いやー特には、お客様の方で、ビジネスモデルを決めていただければコンサルもできますが・・・

(A社):おたくって何ができるの?

(私):(え?いまさらそれ聞く?)平たく言うと、AIの利用に関するコンサルや開発の”ご支援”です。

(A社):そうなんだあ、で今後すればいいの?いや〜上の方がさあ〜(前の会話の繰り返し・・)

(私):まず、ビジネスの企画が固まりましたら、お呼び下さい。。。。

この会話でわかることは、A社は、誰も能動的に変革しようとしていないことです。経営層はその担当を任命して、その担当に丸投げしようとし、その担当は、どこかいいアイデアを持ってそうな会社に丸投げをしようとしています。しかも、何が目的なのか、変革するのは何なのか(もしくは変革したくないのか)すら明確にできていません。私も含めて、会社の経営に参画するものはこれらのポイントを常に意識し、発信するのが重要かと考えました。