HPE Blog, Japan
1820881 メンバー
3629 オンライン
109628 解決策
新規ポスト
Masazumi_Koga

【前世紀AI技術者が語るシリーズ】人工知能(AI)に完璧主義は禁物

筆者がFORTRAN 77とC言語でAIプログラミングを始めたのが1997年。そんなレトロ感満載の米国HPE公式AIアンバサダー古賀政純(こが まさずみ)が、AI・データサイエンスがらみの話をざっくり語るブログ記事、6回目は、「AIにおける精度」について、毎度のことながら、よもやま話を交えながら、ざっくり語ります。

Neural_Networks.png■完全無欠のAIはあるのか

最近、ITの世界でホットな、AI(人工知能)ですが、生成AI、伝統的なAIなどいろいろなAIがあり、期待は大きくなるばかりです。期待が大きくなると、AIに対して、異常なまでの高品質を求めてしまうといったことが少なくありません。

現在のAIは、当然、読み込ませる問題の複雑度に強く依存しますが、様々な分野において、かなりいい具合に、ほどよい結果が得られます。ただ、ある程度なので、100%の精度は実現できません。

例えば、自動運転車の場合、カメラでクルマを認識するにも、人や障害物を見分けるにも、場合によっては、98%の確率で判定できたり、あるいは、天気の悪いときには、さらに精度が落ちたりします。カメラに入ってくる情報によっては、間違うことがあるわけで、あらゆる問題(入力データ)に対して100%の精度を保証できない、ということです。では、なぜAIでは、100%の精度が保証できないのでしょうか?

そもそも、AIにおいて、脳みそに相当する部分は、人間の脳神経細胞のつながりを模倣したものですが、この脳神経細胞のつながりは、コンピューターの中で数学的な関数(なにか値を入力すると、処理されて、結果が出てくる数式)が複雑に入り組んだものとして表現されます。実際の人間の脳神経でも、ある程度の強さの刺激が発生すると、次の脳神経細胞に電気信号として情報が伝達されるという仕組みなのですが、AIの世界でも同じように、ある程度の入力の強さに対して値が出力されるという数学関数を使ってニューラルネットワーク(=脳の働きを模倣したコンピュータープログラム)を構成します。このニューラルネットワークにおいて、学習していない初期段階では、AIのモデル(神経細胞のように、大量の関数がつながった、いわゆる、関数だらけのプログラム。いわゆる、「脳みそ」に相当)には、膨大なパラメータがあり、その膨大なパラメータに値がセットされるのですが、その値は、コンピューターが生成するランダムな値(乱数)が初期値としてセットされる場合が少なくありません。ランダムな値がセットされたニューラルネットワークからスタートして、学習を行い、ちょっとずつパラメータの値を調整していくという、そんな感じです。

「人間を超える知的なソフトウェアが欲しいのに、ランダムな値を入れた状態から学習をスタートするなんて、そんないい加減なものなの?」と思われるかもしれませんが、そもそも最初は、学習していない脳なわけですから、赤ちゃん脳みその状態から学習しないといけないのです。赤ちゃん脳みそなので、日本語も英語も何も学習していないわけですから、神様ではないので、最適なパラメータの値など、そもそもわからないのです。なので、学習できていないランダムな値を入れた赤ちゃん脳みそ(=未学習の脳みそ)からスタートするのが普通なのです。

(もしパラメータが全てゼロなどの同じ値で初期化してしまうと、非効率で意味のある学習が行われなくなります。乱数を使うことで、各ニューロンが異なるパラメータ(重み)を持つようになり、ニューラルネットワーク全体が適切に学習できるようになります)

こんな話を聞くと、うすうす感じる人もいるかもしれませんが、AIが100%完全無欠ではないのは、そもそも学習前の初期のパラメータの値にランダムな値が設定されていることと、学習に使うデータの数や質によって、学習された脳みその質が大きく変わることが起因していることが、数学がわからなくても、なんとなく感覚的にわかるのではないかと思います。

子育てや日々の生活や通う学校によって、子供の性格や味覚や学校の勉強の得意不得意や対人関係の能力が異なるのと同じですよね。ある特定の分野の学習をした脳は、その脳に特化した能力を発揮する、それは人間でもAIでも同じです。また、専門分野でも、いままで経験していない内容や、与えらえた情報が複合すると、間違った回答やあいまいな回答になってしまうこともあれば、うまく答えられることもあるのです。なので、導入したAIに対して、「答えを間違うこともあるなんて、こんなAIは、返品だ!」と怒るのは、完全にナンセンスだということが理解できるかと思います。

ちなみに、筆者が1990年代にやっていたAIにおいて、ニューラルネットワークの初期値の乱数は、C言語やFORTRANの乱数発生関数(rand関数)を使っていました。また、神経細胞に相当する関数(=ある一定の数値以上に達した入力に対して結果を出すような数学関数、例:シグモイド関数など)も、その使い方に関して言えば、突き詰めると、今の最新のディープラーニングでもあまり変わりません。

なので、前世紀のニューラルネットワークと同様に、現在の最新のディープラーニングの学習前のAIモデルでは、最初、乱数がセットされているので、当然、実験を行うたびに結果の精度も変わります。AIの開発者が必死でモデルのチューニングを行うことで、AIの精度が上がるわけですが、それでも完璧な結果が得られないというのは、昔も今も変わりません。

GettyImages-89015314_800_0_72_RGB 8272.jpg■AIに高精度を求めすぎない

「AIが100%完璧な答えを出せないのはわかった。でも精度は極限まで高くないと困る!」という、そんな声は、少なくありません。しかも、AIの開発現場でも、生成AI、伝統的なAIに関わらず、AIモデルの大規模化と高精度化に注目が集まりがちです。

しかし、AIの高精度化に異様にこだわり続けるのも、それはそれで問題です。

例えば、医療診断支援AIにおいて、「患者の診断でAI精度が99.9%ではダメだ!そんな精度では、1000人のうち1人を誤診してしまうじゃないか!生命にかかわるのだから、99.99999999%以上でなければ、AIは採用できない!」となってしまうと、いつまでたっても医療診断支援AIは完成せず、資金が足りなくなるのは目に見えていますし、そのような完璧なAIは、今のテクノロジーで実現できません。

AIに対して、「99.999999999%成功」とか、「あらゆる業務にオールマイティに全部適用できないとダメだ!」とか、「絶対に間違えてはならない!」とか、そういった無理難題なことをAIに求めてはいけませんし、そもそも今のAIはできません。

そんな話を聞くと、「AIって、今まで私が知っているオラクルのリレーショナルデータベースを使ったウォーターフォール型の基幹業務アプリ開発プロジェクトと全然違う感じがするし、間違った結果を出すかもしれないなんて、なんだか怖いなぁ」って感じるかもしれません。なんせ、学習のデータの量、質、AIモデルのチューニングの仕方によって、AIが出す出力(=推論結果)の精度は、変わる可能性があるわけですからね。

しかし、近年は、良質なAIモデルが日進月歩で開発されており、日本のAIベンダーも、海外に負けず、AI開発経験やノウハウをどんどん蓄積し、より「安心できるAI」の開発が進められています。また、オンプレミス版の生成AIも、適用分野によっては、非常に現実的なコストで利用できるようにAIベンダー各社がしのぎを削っている最中です。

こういった「AIを活用する」といっても、その分野によって手法、適用領域、必要な精度、導入するIT基盤も様々なわけですから、これも何度もブログで言っていますけれども、海外のTVや新聞などの有名大手メディアで断片的に語られるAIのニュース情報や記事をちょっと見ただけで、思考停止になって「なんだか、間違った結果がでるかもしれないなんて、AIって怖いなぁ。それに、海外のAIは、すごく進んでいて完璧のように見えるし、精度も非常に高いものが開発されているって聞くし、もう日本の一企業でAIやるなんて無理なような気がするなぁ」という誤った思込みを絶対に抱かないことが重要です。

HPE20180313029_800_0_72_RGB 7849.jpg■DXでは、AIで前に進み続けることが重要

1990年代に「AIは、死んだ学門」とか、「現実社会へのAIの応用は絶対無理」とか、「ENTERキー押してAIから返事が返ってくるまでに1か月以上かかるプログラムなんて’、使い物になるわけがない」とか、「AIは、ブラックボックスで、わけのわからないものだから、そんなものを機械に入れるなんて、絶対反対だ」とか、「コンピューターなのに、100%の結果がでないAIなんて、正直怖くて使えないし、意味がない」とか、「人の神経細胞の仕組みをコンピュータープログラムで模倣しても、解決できる問題なんてものすごく限られるから、実用化は到底できない」とか、筆者含め当時のAI界隈の人々は、まわりからさんざんな言われ方をされ続けました。

しかしながら、筆者を含めAIプログラミングを細々と続けていた当時のAI界隈の人が心に抱いていた確固たる信念は、「完璧ではないにせよ、絶対にAIに絶望せずに取り組み、ちょっとずつでも結果を出し続けて前に進むこと」でしたし、今もそれは変わりません。

まあ、いろいろAIを開発してみたものの、良好な結果がなかなか得られないというのも、それはそれで導入するのが怖くなる気持ちも筆者は十分理解できますし、現在のAI開発では、いろいろ困難が伴うのは確かです。怖いと思うのも仕方ないと思います。たしかに、現実問題、うまくいかない場合も結構あります。

しかし、前回の一休さんの回のブログ記事でも言いましたが、AIの世界では、そもそも、叩けるほどの頑健な硬い石でできた「絶対に崩落しない安全な橋」などどこにもありません。覚悟を決めて貧弱な橋を渡り続ける勇気とフロンティア精神をもち続ける必要があります。誤解を恐れずにいうと、ちょっと肩の力を抜いて、「失敗してもいいから、AIに楽しく取り組む」ということが重要だと思うのです。

「仕事なんだし、そんなの楽しめるわけないでしょう。高精度なAIを作るの大変なんだし、遊びじゃないんだから!」と思われるかもしれないですが、なにも、仕事場において、AIを趣味や遊びでやれといっているのではありません。AIに楽しく取り組めるぐらいのゴール設定で合意し、ちょっと厳しければ、目標を緩めてもいいという業務に適用してちょっとずつDXを進めていこう、ということです。

AIを使う側も、AIを提供する側も、極限の高精度にやたらこだわるあまり、AIの品質そのものに過剰な期待を抱きすぎると、ゴールが遠のいてしまい、全員が疲弊してしまい、いつまでたっても製品化できずに海外の企業に先を越されて終わってしまいます。

開発チームでコミュニケーションをとりつつ、ある程度の精度が出ていて、精度も微妙で完璧ではないにせよ、結果が出れば、まずは、限られた業務でいいので、テスト段階の品質をユーザーに十分理解させたうえで、現場の顧客にリリースすべきです。

そして、リリースした後に、エンドユーザーのアンケートをフィードバックし、不具合を修正し、微調整を行い、またリリースします。この時、エンドユーザから不具合によるクレーム処理として受け取るのではなく、エンドユーザーと共に作っていくというAIの改善体制を構築しておくことが必要です。そうでないと「AIが出す結果が間違うことがある!どうしてくれるんだ!」となってしまいます。何度も言いますが、「AIは、100%」ではなく、「AIは、間違うものだ」を前提で進めなければなりません。

このように、チームで頻繁にコミュニケーションをとりながら、スクラムを組んでアジャイル開発を延々と続けて、精度を高めたり、あるいは、適用範囲を絞るなど、うまく工夫し続けるしかありません。

DL325 Gen11 with GPUsDL325 Gen11 with GPUs■小さくAIを始められるGPUサーバーやAI基盤ソリューションがある

現在のAIの学習・推論環境(とくにGPUを使ったAIサーバー環境)は、当然ですが、私がやっていた1990年代のAIのシミュレーション環境に比べて、まったく比較にならないレベルの結果が、驚くべきスピードでキチンと得られます。

当然、現在でも、うまくいっていないAIも当然ありますし、結果に100%コミットできるというわけではありませんが、それでも、身の回りの生活に大きく影響を与えるレベルにAIは到達しているのも事実です。

なので、「AIは、ウチの会社には、あんまり関係ないや」とか、「結果が100%保証されないのは、危険だから採用できません」と短絡的にあきらめてしまうのではなく、もう少し視野を広げて、楽しむレベルの業務適用ができないかどうか、そういった目線で臨んでほしいのです。

「このシンプルなケースでは、良好な結果がでるし、まあ、ダメな場合も結構あるけど、小さいAIサーバーでも、それなりに多くのケースをカバーできているし、要件を絞れば、許容範囲に収まりそうだな。うちの会社でもこの業務のこのケースなら、小さいこのAIサーバーでも、ちょっとだけ使えそうだな」と適用業務の範囲を狭めて限られたケースのみで利用するという決断も必要です。

現在は、AI用のGPUサーバーや、モデル開発を楽にするAI基盤ソリューション、そして、AI学習だけでなく、エッジコンピューティング領域でのAI推論サーバーなど、AIをやるための武器は、この日本において、すでに用意されています。

また、AI用のGPUサーバーといっても、なにも巨大なタンスのようなサーバーではなく、非常にコンパクトな薄型サーバーも採用されています。

例えば、上図のように、筐体の高さがわずか1U(約4.45cm)の1ソケットCPU搭載のHPE ProLiant DL325(エイチピーイー・プロライアント・ディーエル・さんにいご・ジェンイレブン)という機種のコンパクトサーバーでも、NVIDIA社製のGPUを複数枚搭載できますし、AI推論向けのコンテナソフトウェアなどが動作します。もちろん、AIでよく利用されるUbuntu Server(ウブンツ・サーバー)とよばれるLinux OSも普通に動作します。

さらには、HPE ProLiantサーバーで動作する生成AI基盤ソフトウェアの「HPE Private Cloud AI」もあります。

是非、HPEのようなハードウェアベンダーのAI技術者や、AI開発を行うパートナー企業と、まずは、手探りでもいいから協調してみてください。そして、ハードウェアベンダーが出しているAI向けの小規模なGPUハードウェアや、生成AI基盤ソフトウェアなど、小さく、かつ、簡単に始められるAI基盤を是非、検討してみてください。

KOGA MASAZUMI (@masazumi_koga)

0 感謝
作者について

Masazumi_Koga

Hewlett Packard Enterprise認定のオープンソース・Linuxテクノロジーエバンジェリストの古賀政純が技術情報や最新トピックなどをお届けします。保有認定資格:CCAH(Hadoop)/RHCE/RHCVA/Novell CLP/Red Hat OpenStack/EXIN Cloud/HP ASE DataCenter and Cloud等