DX、IoT時代の到来により、注目が高まっているAI技術、同時にこの開発エンジニアにも注目が集まっています。ただAIとは非常に広い範囲で利用できるため、開発には非常に高度な知見や技術力が必要と言われています。
そもそもAI開発とはどのように行われるのでしょうか?この記事では、AIの開発手順、およびAIの利用方法なども踏まえ詳しく解説していきます。
AI開発とは?
AIが注目されるのと同時にAI開発の需要も高まっています。ただ、その開発についてどのように実施したらよいのか?分からない方も多いのではないでしょうか?また、AI開発には高い技術、特別なプロセスが必要だ、と考えていらっしゃる方々も多いと思います。
果たしてそうでしょうか?半分会っていますが、半分は間違っていると言えます。ただそのことを理解頂くためにはAIとは何か?どのような業務で利用できるのか?などをご理解いただく必要があります。
そこでAIの歴史やどのようなことが出来るか?を開設した上で、AI開発の手法ついて解説します。
AIとはどのようなものか?
まずそもそもAIとは何?と言われて正確に答えられる方はいらっしゃるでしょうか?AI(artificial intelligence)=人工知能のことです。 但し、その詳細機能や使い方について答えられる方は少ないのではないでしょうか?また、最近開発された技術と思われがちですが、実は長い歴史があることもあまり知られていない事実です。
ここではAIとはどのようなものか?もう少し詳しく説明します。
実は半世紀以上の歴史がある
実はAIの歴史は非常に古く、その言葉が定義されたのは1956年のことです。そこから実に2回ブームが生まれ、現在が3回目のブームとなっています。この3回のブームは失敗と進化の繰り返しです。
第1次ブームでは、ルールベースで動くAIと呼ばれています。問題はあるルールに基づいて解け、その要素は「推論」と探索」であるというのがこのルールベースの考え方になっています。これはパズルや簡単なゲームなど明確なルールに基づく問題に対して高い性能を発揮する考え方ですが、ルールがあいまいなケースや、要因が複雑に絡み合う問題には対処できなかったため、実用性がなく衰退しました。
第2次ブームは1980年代です。ここで出てきた技術が「エキスパートシステム」、現代の機械学習の祖となる存在です。人工知能に知識をルール同様に教え込み問題解決しようというものです。例えば、赤いリンゴと青いリンゴのタグをつけたデータを大量に読み込み、判別基準を色と教え込むことで、AIは赤リンゴと青リンゴを区別できるようになります。ただ判別できない際の例外処理に対応できないことや、人が学習データを準備する必要があること、そして何よりハードウェアレベルが低いことから実用性が乏しく、下火となってしまいました。
そして2012年頃から始まった第3次ブーム、「ディープラーニング」です。ディープラーニングは機械学習をさらに進化させた考え方になります。先ほどの赤いリンゴと青いリンゴのタグのついたデータは読み込みますが、判別基準はAI自身で考えさせることになります。判別基準をAIに委ねることでより複雑であいまいなケースでも対応できるケースが増えていくというわけです。
現在では第2次で開発されたエキスパートシステムの発展形である機械学習、および第3次で注目されているディープラーニングがAIの1つの種類として定義されています。
現在は大きく3種類
AIは機械学習とディープラーニングの他にもう1つあります。それがベイズ統計です。
尚、前の章で説明しましたが、あらためて簡単に解説させて頂こうと思いますが、機械学習とは、機械に多くの知識とルールを学習させることです。1980年度に注目された手法です。そして、ディープラーニングは、2012年度に注目された手法で、機械学習とは違い、知識のみを与え、ルールは自身で考えさせる手法です。今、いろいろな世界・分野・企業・用途・業界・分野で利用されていますよね。
ベイズ統計とは、主観的統計学と言われています。例えばさいころの目の中で1が出る確率は?と聞かれた時、多くの方は6分の1と答えるでしょう。これは客観的統計と呼ばれます。
しかし実際に6回さいころを振った場合どうでしょうか?必ず1/6になるとは限らないですよね?これを主観的統計と呼びます。
AIではこの原理を使い、主観的統計値を学習させることで複雑な分析を可能としています。
例えばさいころを6回ふり、1がでる確率の結果を大量に学習させることで実際の出る確率を突き詰めていくわけです。実データの分析などで利用できますよね。
AI xビジネスでできる事
AIは大きく3つの機能に分類できるとお話ししました。ただこの機能がどのように使われるのか、イメージできない方は非常に多いと思います。そこでどのような使い方をされているのか?実例を用いて解説します。
応用できる分野は大きく3種類
AIを応用できる分野は幅広いが、大きく3つに分類できます。
1つ目は「予測」、売上需要予測や与信スコアリング、最近では商品レコメンドや検索連動広告など多くのことに採用しています。主観的統計値データを元に分類する、ベイズ統計が活躍する場面です。
2つ目は「分類」、最近では音声認識や顔認証、機械故障の予兆検知や迷惑メール判定など、複数種類あるものを分類するシーンで利用されています。
そして3つ目は「実行」、AIを持ちいる際の最終系とも呼ばれる使い方です。自動運転やQ&A対応のチャットボット、文章要約や機械翻訳など、AI考察結果を元にアウトプットする分野です。
特に2つ目と3つ目は3つの機能すべてを利用して動作しています。
幅広いビジネスシーンで利用できる
この3分野に当てはまる業務は多数あり、まさに今、多くの業務がAIに置き換えられつつあります。特にある一定ルールに当てはまる繰り返し作業や、分析することで人が判断するより正確で的確な判断ができるような分野においては今後もAIへの置き換えが進むことでしょう。例えば集計作業や金融業界の与信業務などがそれに当てはまります。
AI開発はアプリケーション開発+α
それではAI開発とはそもそもどのような内容なのでしょうか?端的に言えばアプリケーション開発そのものと言えます。開発ツールを用いてAIアプリケーションの開発する、と言えばよいでしょうか。ただ、通常のアプリケーション開発と大きく異なるのは、考慮すべき項目が多いということです。AIは利用できる幅が大きいため、その分考えることが増えてしまうのです。
AI開発のプロセス(工程)
さて、ようやく本題ですが、AI開発のプロセスについて解説します。AI開発はアプリケーション開発+αである、とお話ししました。それでは具体的な開発プロセスはどのようなものでしょうか?ここではそのプロセスの詳細について、具体的に解説しましょう。
基本工程はアプリケーション開発と同じ考え方だが検討項目は多岐にわたる
AI開発はアプリ開発とほぼ同じと開発手法と言ってもよいかもしれません。ただそれぞれのプロセスにおいて考慮すべき範囲が広く、考慮すべきポイントが非常に多いと言えるでしょう。
具体的にどのようなプロセスで、どのようなことを考えていけばよいのか?解説します。
大きくは4つのフェーズに分類される
まず開発プロセスは大きく4つに分類されます。設計・PoC・実装・運用とアプリケーション開発したことある方ならよく聞かれる内容ではなかろうか?そう考えております。しかしながら各プロセスで考える項目は非常に多くなります。それぞれのフェーズにおける考慮点は下記のとおりとなります。
構想、設計フェーズ
第1に業務上の課題を整理し、要件定義と設計します。
この際大事になるのは、AIを目的化しないことです。皆さんが解決するのはあくまでも業務課題であり、AIを導入することではありません。また業務課題すべてをAIで解決するという間違った考え方を持つ方も多くいらっしゃいます。AIは業務課題を改善する方法の一つでしかありません。さらにROIが成立しなければ意味がありません。
まずは業務課題を洗い出し、AIで解決すべきこととその優先順位、およびROIの成立有無を確認することが重要です。その上で具体的な機能要件や設計に入るべきです。
さらに構成検討する際、この課題はAIで解決するべき課題か否か?関係者で議論することも重要です。
これはAIが目的化していないかどうかを確認する為です。AIはいろいろなことが出来ますが、人が短時間で出来るようなことや効果が望めないようなことに莫大な費用を払ってAI化する意味はありませんよね?あらゆる観点で一度その計画を見直し、AI化する意味が本当にあるのか確認すべきです。
これらプロセスは非常に重要です。判断を誤れば、導入後、何の効果も出ない無意味な仕組みを導入することにもなりかねません。
常にだれの何のためのAI利用か?忘れないようにしましょう。
PoCフェーズ
次に行うのがPoCフェーズです。PoCとは実証実験の事です。設計した内容に従って試験環境を構築し、評価することです。AI開発についてはこの点も重要です。幅広い利用範囲をもつAIだけになんでもできてしまいます。が、その方向性やROIが成立するか否かは作り方次第とも言えます。よってこれらを判断基準とし実証実験することで、第1フェーズで立てた想定効果が出るかどうか?判断し、必要に応じて改善し、導入後の大きな失敗を防止します。
PoCはAI化することに意味があるのか?求める効果を期待できるのか?を判断する最終段階です。この段階で見落としがあれば後々成功することはないでしょう。ですからテスト計画や判断基準もしっかり検討し、慎重に評価を行う必要があります。
また、PoCにより当初効果と乖離が大きい場合は一旦中止し、再度第1フェーズにもどって改善方法やAI化すべきかどうかについて再度議論することも必要と言えます。
また評価段階では、効果だけでなく、使い勝手や運用面などについても評価することをおすすめします。これはたとえ求める効果が出たとしても、利用者にとっての使い勝手が悪い、運用者にとって運用しづらい仕組みだった場合、結果的に利用されず効果が期待できないからです。よってPoCは利用者、運用者にも利用してもらい、評価してもらうことも重要です。
実装フェーズ
PoCで導入効果が見込まれる場合、実装フェーズに移ります。ここはソフトウェア開発とは大きく変わりません。
アプリケーション開発同様、①詳細設計、②コーディング、③テスト+バグ修正、④本稼働に向けた実装
という具合でプログラムを実装します。先にも書いた通り、AIだからと言って特別なことをするわけではありません。通常のプログラミングと同様の事を注意しながら進めて頂ければ結構です。
またIoT等でデータ収集する際はデバイスの設定やプログラミングなどもこのタイミングで行います。
この段階で完全に稼働できる状態とし、本稼働できるようにします。
運用フェーズ
そして最後は運用フェーズです。ここでのポイントは導入後の効果測定です。導入後も構想フェーズで設定したKPIを元にモニタリングを続ける必要があります。なぜならばAIは読み込むデータ量が増えれば増えるほどよりその精度は上がっていきます。それと同時に目的地に近づくケースもあれば悪くなっていくケースもあり得るわけです。長期的視線でモニタリングし続ける運用が必要となります。
またその分析結果によってはAIのチューニングも必要と言えるでしょう。データ収集が進むと当初と比べ想定外のデータが流入しエラーなどが増える可能性もあります。定期的な確認とそれにあわせたチューニングが続くと考えるべきです。
また、PoC時に行った使い勝手、運用面についても定期的に評価するようにしてください。導入初期段階ではPoC時ではわからなかった問題点が発見されるケースもあります。システムはあくまでも利用者や運用者にとって使いやすいものでなければ継続して利用してもらえません。もし課題があるなら出来るだけ早く修正し、不満が残らないようにしましょう。
成功に導くためのポイント
ここまでAIの構築方法について解説しました。解説の中にも記載はしましたが、全般的な観点でみてAIを成功裏に持ち込むために注意するポイントがあります。ここでは成功につながる3つのポイントについて整理します。
目的を見失わないこと
AI開発するにあたり技術に固執する方がいらっしゃいます。悪いことではないのですがあまり固執しすぎると何の目的で誰が使うのかわからない状態でAIを構築してしまうケースがあります。結果、しっかり作りこんだのに、目的にあっておらず使いづらいAIとなってしまうことがあります。
それから誰が使うのか?という点も重要です。目的にかなった仕組みであっても、利用されなければ意味がありません。そういう意味でも、利用者目線で使いやすい仕組みでなければなりません。
何より大事なのは利用者の目的にあった利便性の良いAIが必要だということです。この点を忘れないようにしてください。
更新しやすいアルゴリズム、コードにすること
AIが通常のプログラミングと異なる点として、利用し続ける中で利用目的がアップデートされていくことです。AIで分析し、その結果を元に次の解析する、などということは一般的な使い方であり、その都度AIのアルゴリズム、コードのアップデートが必要になります。
大事なのは出来るだけ標準的で誰でも変更が出来る構成にしておくことです。後でアップデートする際、だれも修正できないブラックボックスのようなプログラムでは後々苦労することになります。
ある程度、だれでもわかる、アップデートできるそんなシステム構成にすることを忘れないでください。
運用しやすいプログラムであること
最後は運用性です。その2と若干被る部分があるかもしれませんが、何かあったとき、トラブルシュートしやすい構成にしておくことです。トラブル時にログ確認やデバッグなどで動作確認できるような構成としておくなど、運用時の考慮すべきです。
構築者と運用者が分かれる場合、構築者は運用者側の意見も聞いて設計することをおすすめします。
例え良い仕組みでも、運用できないのでは継続稼働できません。運用者の意見や目線も忘れないようにしてください。
まとめ
いかがだったでしょうか? AI開発プロセスは基本、アプリケーション開発と同じです。ただその利用方法は幅広いため、具体的にどのような業務のどの部分で利用するか?をしっかり検討する必要があります。
今回の記事を参考に、AIを利用した業務改善を皆さんも検討されてみてはいかがでしょうか?