AIを社会実装するには、実際にAIを利活用するプロセスに従って、それぞれの領域でどのような課題があるのかを自ら確認できるようになることが求められます。
ディープラーニング、そしてその一分野であるLLM (Large Language Model) の発展によりAIが生み出す価値は加速度的に増加しており、これらの価値を社会で適切に利活用することができれば、大きなイノベーションを起こすことが可能となります。同時に、各企業はビジネスの中で、AIによる大きなインパクトを理解し、その恩恵を社会に提供することができるようになる必要があります。
ビジネスにおいてAIを利活用する本質は、AIによって経営課題を解決し、利益を創出する点にあります。ビジネス的な成功と技術的な成功は車輪の両輪であり、一方だけを論点とすることはできません。AIの利活用は、どのような成功を導きたいのかという経営方針の検討にもつながります。自社既存事業へのAI利活用、自社新規事業へのAI利活用、さらには他社・他業種への横展開を考えてのAI利活用では、成功の指標が異なります。昨今ではプラットフォーム型ビジネスモデルがよく取り沙汰されますが、結局のところマネタイズポイントが明確でなく継続できなくなる失敗が多く起こっています。
AI利活用によるビジネスインパクトを最大化するために、“5分が1分になること”ではなく、“5日が1分になること”に焦点を当てることが極めて重要です。部分最適としてAIを利活用しようとしているうちは、ビジネスインパクトを生み出すことは難しいでしょう。全体を最適化することで、5日費やされていたことが1分で実行されるようになれば、他のプロセスが連鎖的に改善され、他社を圧倒するバリューチェーン・サプライチェーンを手に入れることが可能になります。
しかし、ビジネス利活用は、言うことは簡単ですが、実際に実行することは難しいことは明らかです。その中で、少しでも成功確率を上げるために企業として出来ることは、企業の文化を徐々に変革していくことです。
ビジネスで利活用するAIサービス・プロダクト (以下AIシステム)を開発するにあたって解くべき課題は何か、その課題の解決手法はAIなのか、どの部分にAIを適用するのか、その目的に基づいたデータをどのように取得するのか、データの加工・ 分析・学習、実装とその評価をどのようにするのかなどを考える必要があります。さらには、実装した時に、そこから得た教訓を、運用の改善、システムの改修、次のAIシステム利活用へと循環させていくサイクルが重要です。また、同時にそのAIシステムが他者からどのように感じられているのかを考える必要があります。
AIのビジネス利活用に関する議論はいかに短期的に投資回収できるかという点にフォーカスされる議論が多いように思われます。しかし、AIの特徴上、一部短期で投資回収できるものもありますが中長期を見据えて方針を検討する必要があります。
本章では、AIを企業において利活用することで具体的なビジネス成果を生み出すことに焦点を絞っています。しかし、「これさえ考えておけばよいというチェックリスト」ではありません。AIは発展途上の技術であり、今後も継続的な変革を起こすことは明らかです。常にキャッチアップを行うことでビジネス、ひいては私たちの社会における様々な価値を高めるきっかけになればと思います。
AIシステムを開発するプロジェクト(以下、AIプロジェクト) の進め方として重要なことは、従来のシステムインテグレーター的なシステム開発 (ウォーターフォール) とは異なっている点です。人が設計し、人の想定通りに稼働する従来のシステムとは異なり、全ての想定を当初から織り込むことは原理的に不可能となります。その前提を理解した上で全体像を把握し、アジャイル的なシステム開発を行わなければなりません。
ここで検討するべきことは2点です。1点目は「そもそもAIを適用する必要があるのかを考察し、利活用した場合の利益計画を立てて投資判断を行う」ことです。2点目は「ビジネス・技術上に組み込むべきデータのフィードバックの機構をどのようなものにするかを検討する」ことです。
1点目について、「そもそもAIを適用する必要があるのか」とは、AIは手段の一つでしかなく目的ではないため、AIの特性を理解した上で判断する必要があります。例えば、新製品や新たな不良など“今後の発生パターンが多様”であると想定される場合であれば、初期の推論精度は期待できないことも多いですが、将来的にはディープラーニングを使った方が成功することが考えられます。または、初期はルールベースで、データが蓄積された後にディープラーニングを適用する、という考え方もあります。
「利活用した場合の利益計画を立てて投資判断を行う」についても同様です。利益という観点を含めると時間軸が重要になることが多く、利益が出るのは数十年後となる可能性もあります。そのため、ビジネス的には短期の試算に止まらず、初期のターゲットを定め、コストと推論精度のバランスを中長期で見ていく必要があります。これらを検討し、最終的に利益計画に落とし込み、投資判断をすることになります。
2点目は、データのフィードバックの機構をビジネス上も技術上も組み込むことができるかにかかっています。データが蓄積され、データのフィードバックが行われ、そのデータをAIが継続的に学習することで、推論精度が向上し、より少ないコストで大きな成果を生み出すことができるサイクルのことです。時間軸に沿ったプロセスを組み込み、シミュレーションシートに落としてみることでイメージしやすくなります。初期から必要充分な推論精度を満たすことはまれであり、運用を継続しながら推論精度を上げていくことが現実的な進め方になります。
AIを利活用する場合はBPR (Business Process Re-engineering) が発生します。現業務プロセスがアナログ空間にいる “人”が実行することが前提のプロセスである場合、AIを利活用するプロセスに変更する必要があるためです。まずは、現プロセスのコストとAI導入後のコストを算出し、それぞれが乖離 (特にAI導入後のコストが増大する)する場合は、AIの適用箇所と技術の連携範囲を再検討する必要があります。
例えば、製造業における工場での外観検査の自動化の場合、アナログ空間 (工場)で働く人は検査を行うのと同時にその製品を別の場所に運ぶという作業も行っている場合も多く、検査を行う部分のみをAI適用すると、そこから別の場所に運ぶという作業をそのまま人が行うことになり人件費削減にならない、といった事象が発生します。ただ、これは今までの業務プロセスをそのまま活かそうとしたために起きます。そうではなく、「検品+移動」を別々に分けて考え、それぞれのプロセスを設計し直すことで解決することができます。また、AIシステムは進化するので、前述したフィードバックによるAIの推論精度の向上により業務プロセスを徐々に変化させることも必要です。
従来、システムを「納品」する形式が広く取られていました。しかし、この形式はAIプロジェクトには向きません。AIを用いたシステムを開発する場合には、サービスとして提供し運用することが望ましいのです。提供形態としては、クラウド上で Webサービスとして提供する方式や、エッジデバイスにモデルをダウンロードし、常に最新の状態となるように更新を続けるという方式があります。
クラウドを使うことで、必要な時に必要な量のリソースを利用することができます。モデルをサービスとして提供するための方法の一つとして、Web APIを用いてモデルに入力データを送り推論結果を返すという方法があります。Web APIとはネットワーク越しにシステム間で情報を受け渡す仕組みのことです。なお、クラウドをはじめとしたコンピューティングリソース上にモデルを置いて利用できるようにすることを「デプロイ」と呼びます。
エッジは、利用現場側に配備するリソースのことで、その場でモデルを実行します。エッジを利用したシステムを構成する場合は、計算機内でモデルを動かし、入力されたデータに対して推論結果を出力します。運用の中で、必要に応じてネットワーク環境を通し、データの蓄積やモデルの更新を行います。
表7.1 ではAIシステムを提供する際に、クラウドとエッジそれぞれを利用した場合のメリットとデメリットを比較表としてまとめました。
表7.1 クラウドとエッジのまとめ | | メリット | デメリット | |-----------|--------------------------------------------------------------------------|---------------------------------------------------------------------------| | クラウド | モデルの更新が楽、装置の故障がない、計算機の保守・運用が不要 | 通信遅延の影響を受ける、ダウンしたときの影響が大きい | | エッジ | リアルタイム性が高い、通信量が少ない、故障の影響範囲が小さい | モデルの更新が難しい、機器を長期間保守運用する必要がある |
AIプロジェクトは、データを確認する段階、モデルを試作する段階(PoC)、運用に向けた開発をする段階にフェーズを細かく区切り、収集されたデータの中身や学習して得られたモデルの精度に応じて、柔軟に方針を修正できるような体制が望ましいです。
なお、こうした特徴と開発計画に適した契約形式を採用し、適時適切にコミュニケーションをとって、プロジェクト管理することも必要になります。
AIプロジェクトは、開発段階から多岐にわたるスキルを保有する様々なステークホルダーを巻き込んだ体制づくりが必要となります。
AIプロジェクトを推進するために必要となるスキルの範囲は非常に広く、AIに関する研究開発者・それを支えるシステムを構築する技術者だけではなく、ビジネス的な観点も踏まえて全体を把握・意思決定するマネージャや、システムを使う際のUI (User Interface) / UX (User eXperience) に関するデザイナー、AIモデルを開発するデータサイエンティストを含むトータルなチーム構成が重要となります。マネージャはプロジェクトにおいて最終的なゴールに対して、どのようなモジュールでシステムを構成し、どの部分をどの手法で解くかを検討します。デザイナーの役割は、AIのモデルが正しく更新されるように、UI設計する点にあります。AIシステムが推論精度を保証できない中では、例えばAIに加えて“人”がフィードバックすることで、業務を遂行しつつ継続的にモデルを更新し続けられるようなデザインが重要となります。また、UIの構成が悪く、それを確認するためのコストが大きくなってしまうと、ROIが悪くなってしまいます。このような課題をデザイナーが解決します。昨今、UI/UXの重要性が再認識され求められる役割も重要度が増しています。データサイエンティストは、AIを用いて、対象データの分析やモデルを構築する役割を担います。アルゴリズムとデータは密接に紐づくため、早い段階からプロジェクトに参画し、どのようなデータを利用すべきか、どのようにラベルを作成するかに関する設計にも携わることもあります。
実際にサービスやプロダクトとしてAIシステムを世に出す局面では、ステークホルダーが増えます。想定外のステークホルダーがいないか改めてチェックし、攻めと守りにつなげていきましょう。
実際にAIそのものを開発するフェーズは、AIプロジェクト遂行における一部でしかなく、前後に膨大なプロセスが存在します。さらに、実はその前後がAIプロジェクトを成功させる上でとても重要なプロセスになります。そうしたプロセスはいくつかフレームワークや概念(「CRISP-DM、CRISP-MLとはなにか?」「MLOpsとはなにか?」を参照)として体系化されています。
CRISP-DMとは、CRoss-Industry Standard Process for Data Miningの略で、データマイニングのための産業横断型標準プロセスのことです。SPSS、NCR、ダイムラークライスラー、OHRAなどが中心となった同名のコンソーシアムにて提唱しました。主にデータを分析することに主題を置いており、6つのステップに分割されています。
また、この6つのステップは完全に順に行われるわけではなく、大きな順序としての流れをたどりながら、相互に行ったり来たりをするプロセスが発生することになります。
また、最近はこのCRISP-DMを発展させたCRISP-MLの概念も出現しています。Business Understanding と Data Understandingが統合され、Monitoring and Maintenance (監視・保守)が追加され6つのステップとされたものです。
MLOpsとは、Machine Learningと Operationsを統合した造語であり、AIを本番環境で開発しながら運用するまでの概念です。DevOps (Development と Operationsを統合した造語)から派生しています。NIPS2015にて発表された Hidden Technical Debt in Machine Learning Systems という論文の中で、AIモデル構築部分は、全体のAIプロジェクトの中で極めて小さく、その周辺領域がとても大きいこと(図7.2) が示されているのですが、この全体の仕組みをシームレスに連携し、実際の本番環境でAIを活用するための仕組みやシステムなどが概念に横断的に組み込まれています。
MLOpsは明確なプロセスの定義というもので示されてはいません。最も重要なことは、AIをビジネスで活用しようとした時、全てのプロセスを1回だけやれば良いということではなく、システム運用時でも継続してプロセスを回すことで、より推論精度が高く安定したシステムとすることを示している点です。
AIプロジェクトは不確かな状況でのプロジェクト推進になるため、そもそも何を作りたいのかと、実現方法の各論点を事前に明確化することが重要です。
サービス化、プロダクト化に必要な本番環境において構築すべき仕組みとしては、推論を行う環境、データを継続的に蓄積する環境、再学習をするための環境が挙げられます。
クラウドを利用する際は、所定の推論用のサーバを立ち上げておき、利用時はサーバ上に用意したAPIにアクセスすること等でモデルを動かします。ディープラーニングのモデルを動かすには、大きな計算コストが掛かるため、立ち上げておくサーバの数も検討する必要があります。サーバの数が少なすぎると安定してサービスを供給できず、また多すぎるとコストが増加してしまいます。エッジで処理を行う場合は、通常は1台の機体に対して1つのモデルを割り当てるため、処理する計算負荷は固定と考えられます。エッジの場合は、モデルをアップデートする場合には、遠隔で更新する仕組みの開発や、装置が故障した場合の運用体制が重要となってきます。
AIシステムのサービス化、プロダクト化は必ずしも自社内のみのクローズドの環境で行うものではなく、例えば産学連携を行うことで、プロジェクト構成メンバーを分散させるのも1つの手段です。大学からデータサイエンティストを出し、事業会社がデータを提供する、ベンチャー企業が環境を提供する、等です。
また、外部のアイデアや技術と結合しオープンイノベーション化を計るのもイノベーションを生み出すスピードを向上させ、コストやリスクを低減させることに有効であると考えられます。例えばCiscoは有望なスタートアップへの出資やM&A、 協業関係を築くなど外部資源を積極的に活用することで自社内に研究拠点を持たずとも効果的な新技術の開発、さらには市場化を成し遂げました。
昨今のリードタイムの短縮化、顧客要望に応えるためのより付加価値の高い製品の開発が求められるようになりました。より顧客の要望を取り入れることが重要な局面になってくると、オープンイノベーションの議論も単なる研究開発領域に留まらず、技術の商用化やビジネスモデルの領域にまで及ぶようになってきています。欧州では、これまでは大学・産業界・政府の産学連携ネットワークを中心とする“Triple Helix model”がイノベーションの概念として一般的であったのが、“Citizen” (ユーザー)も参画し相互に関連し合いイノベーションを促進する概念が浸透してきています。
このようにさらに様々なステークホルダーを巻き込みサービス化、プロダクト化を検討する必要があります。
AIシステムは作ったら終わりではなく、そこから得た教訓を運用の改善やシステムの改修、次の開発へと循環させていくサイクルが重要です。また、技術発展が早い中、法的、社会的、倫理的、文化的な課題などで明確な答えや線引きがないものも多く発生するでしょう。
想定外の事件や事故を起こさないためにも、技術の開発段階から以下のようなことを考えていくことが求められています。
これらの問いのいくつかには、絶対的な解があるわけではありません。また文脈などによって答えも変わってくるでしょう。それでもAIシステム開発のどの段階でも、これらの質問を繰り返していき、必要に応じて対策を取ったり、ユーザーへの説明をしていくことが重要です。
また、このような知見や経験を次のAIシステム開発のデザインに反映するだけではなく、研究会や勉強会などで共有、議論していくことで、研究開発がしやすい環境づくりへとつながっていくでしょう。
AIプロジェクトを成功させるためには多くの要素が重要となり、データの量と質や、学習から運用までの幅広いプロセスにそれぞれ気をつける必要があります。 ここでは、適切なデータ収集の方法からアノテーションのようなデータ加工のプロセス、開発環境の準備、学習から推論について説明します。
AIプロジェクトは、特にデータの量と質が重要となります。データの収集先として、オープンなデータセットを利用する、 自身で集める、外部から購入するなどが挙げられます。
オープンデータセットとは、企業や研究者が公開しているデータセットです。利用条件が決められている場合もありますが、本来高いコストで集めなくてはいけないような大量のデータが利用可能で、適切に使えばプロジェクトを早く進めることができます。研究の対象として扱われることの多い、人の認識や文の特徴量といった広範な利用が可能なテーマや、多くの応用先が考えられるテーマに関するものが多く揃っています。例えば、コンピュータビジョン分野であればImageNet、 PascalVOC、MS COCO、自然言語処理であればWordNet、SQuAD、DBPedia、音声分野であればLibriSpeechなどが挙げられます。なお、商用利用が出来ない場合もあるため、利用の際はライセンスに注意を払う必要があります。
オープンなデータが利用できない場合、自身で作成する必要があります。作成方法の1つとして、自身でセンサを利用し環境の情報を計測するアプローチがあります。センサとしては、カメラなどのイメージセンサ、マイクロフォン、形状を計測する3Dセンサなど様々なものがあります。対象物の形状を認識しようとした場合は、カメラを利用するよりは、3Dセンサのような質・量ともに豊富な情報を得られるセンサを利用した方がモデルの精度が上がりやすくなります。
ただし、広く普及していないセンサの場合、高価になりがちです。プロジェクトのROIを踏まえた上でセンサを選定する事が重要となります。計測データ以外にも、テキストデータを解析することで得られる情報や、時間的な変動を捉えるための時系列データ、アンケートやインタビューから得られるユーザーのフィードバック、Webサイトのログデータ、ソーシャルメディアの投稿データなど様々なデータがあります。これらのデータから得られる情報は、それぞれ異なる側面や観点からの情報を提供するため、認識すべき対象に合わせてデータを収集する事が大事です。さらに、こういったデータを利用してディープラーニングによる学習を通して高い精度を達成するためには、膨大な量のデータの用意が必要となることもあり、その蓄積方法についても考慮する必要があります。
データを収集する際には、AIのモデルを訓練できるデータとなるように気を付けなければなりません。
まず、データには認識すべき対象の情報が十分に含まれている必要があります。例えば、画像を通じて人物を検出したい場合、収集する画像には人物がはっきりと写っていることが重要です。もし人物がぼやけている、または背景と同化しているような画像ばかりをデータとして収集してしまうと、AIモデルは十分な学習を行うことができず、精度の低い結果となる可能性が高まります。したがって、データの質とその内容がモデルの性能に直接影響を与えるため、適切なデータ収集は極めて重要です。
次に、データの偏りをなくすことが必要です。データの偏りとは、訓練データが現実世界のデータの分布を適切に反映していない状態を指し、これがバイアスの問題を引き起こします。通常、ディープラーニングでは、全てのデータに関するロス (例えば推論値と真値の差分)を最小化することで学習を行います。このため、例えば分類問題を学習する場合、ロスを最小化するだけでは大量に集まったクラスを優先して学習をすることになってしまい、データの少ないクラスの精度が低くなることがあります。このためデータの偏りがあると、モデルが特定のタイプの結果に偏った出力をしたり、一部のデータパターンに過剰適応してしまう原因となります。オープンデータセットのように十分に大量のデータが用意されている場合は、多少の偏りがあり相対的にデータ数が少なくとも一定程度の精度を出すことはできます。しかし、自身でデータを集める場合など、 十分な量のデータを集めることが難しい場合は、偏りの問題がクリティカルになることがあります。出現頻度の低いデータでも重要な場合は多いため、そのようなデータについても十分な量を収集し、バランスの良いデータセットを構築することが重要です。
データの網羅性についても重要です。全く学習したことのない状況において、適切に推論することは難しいです。これはデータからモデルを学習しているため、データ自体がない状況では適切にモデル化ができないからです。転移学習などを利用することで、ある程度はデータ数の少ない状況に対する精度も上げられるものの、十分な精度を確保することはやはり難しいです。そのため、安定した推論精度を得るためには、可能な限り広い状況を網羅できるようにデータを準備しておく必要があります。
収集した生のデータは、不要な情報や、データ間で形式の違いがあり、そのまま学習に利用できることは少ないでしょう。
そこで、前処理としてデータを加工します。例えば、カメラで動画として集めたデータを静止画に切り分けるようなデータの変換や、複数のデータベースのテーブルに蓄積したデータを、学習環境にダウンロードして集約することなどがあります。カメラで撮影したエリアの中において、認識する対象のエリアがあらかじめ決められているなら、そのエリアを事前に切り抜くなどして問題を簡単にするといった事前加工などもあります。また、文章データの場合、文字をそのままの形式で学習に利用せず、文字や単語を一意の数字やベクトルに変換しておくこともあります。
教師あり学習の場合は、正解データを作成する必要があります。通常は、この正解データは人間によって作成されます。この作業をアノテーションと呼びます。必要となるデータ量が膨大であるため、このアノテーションは複数人で実施するのが一般的です。しかし、複数人で実施する際、アノテーションのばらつきが問題になります。その原因として、①アノテーション定義の曖昧さ、②アノテーション実施者の感性、③作業の専門性、④認知容量を超える規模、⑤ケアレスミスなどが挙げられます。この解決のため、アノテーションの要件を正しく決め、作業者のアサインメントを調整し、レビュープロセス等の仕組みを作ることが大切です。
要件を決める際には、マニュアルを作成することで、アノテーション作業者がその要件を理解できるようにします。マニュアルの作成時には、特にアノテーションの判断軸とそのサンプルの提示、作業精度の明確化をしなければなりません。AIが対象とするような問題はルールでの記述が難しい場合が多いため、人が正解を設定する場合もその判断軸が曖昧になりがちです。アルゴリズムまで明確にルール化できていなくとも、言語で記述できる範囲で判断軸を明確にし、言語で伝わらない場合は事例も載せることで、曖昧さを減らすことができます。
さらに、例えば画像上の物体を矩形で囲む場合など、アノテーションすべき値を一定の範囲内に収めたい場合に、マニュアルにおいて、どの程度の誤差を許容するかを明確化します。加えて、ルールを改善しマニュアルの精度向上を行います。特にディープラーニングのように大量のデータを扱う場合には、人的コストに特に気をつけなくてはいけません。大量のアノテーションを短期間で実施するためには、外部へ委託することも1つの手段となります。
分析のために収集したデータの中には、様々な種類の個人情報が含まれることがあります。例えば、アンケートに記載した氏名や住所情報や、店頭に設置したカメラに写った来店者の顔画像などが挙げられます。これらの情報の保持は、法的リスクやプライバシー侵害、セキュリティリスクにつながり得ます。これを避けるため、個人情報を含むデータに対して、匿名加工を行います。匿名加工では、個人を特定できないように情報を加工することで、プライバシー保護を図ります。これには、氏名等の個人識別につながる情報の削除やマスキング、データの集約化などが含まれます。また、画像や音声などのメディアデータの場合は、元データに復元できないような特徴量のデータにしつつ、生データは削除するといった対応が考えられます。
AIモデルを開発する際に用いられるプログラミング言語としては、C、C++、Python、Java、R、Matlabなど様々なものがありますが、その中でもPythonが一番多く使われています。
Pythonには多種のライブラリ (様々な機能を簡単に使えるツール群) が揃っており、機械学習だけではなく、データの分析やWebアプリケーション開発など様々な事が可能になります。特にディープラーニングに関するライブラリは多く揃っており、実装済みのコードがオープンソースとして多数公開されています。Pythonを利用して、複数人で開発したり、実装済みのコードを利用したりする場合には、Python自体とそれらのライブラリのバージョンを合わせる必要があります。ライブラリのバージョンが異なることでプログラムの挙動が変わる可能性があるため、プロジェクトごとにライブラリやPythonのバージョン等の環境を切り替えられる事が望ましいです。環境を切り替えるためのツールとしては、pyenvやvirtualenv、 pipenv、poetryなど様々なものがあります。また、Dockerのような仮想環境を利用することで、OSのレベルから環境の一貫性を保つこともできます。
Pythonコードを作成するための開発環境として、テキストエディタを使う方式、IDE(統合開発環境)を使う方式、さらに Jupyter NotebookやGoogle Colaboratoryというブラウザ上でPythonコードを編集・実行し結果を管理する方式に分けられます。テキストエディタとしてはVimやEmacsが広く使われています。どちらのエディタについても編集を容易にするためのツールが多数公開されており、効率よくコードを書くという点ではたいへん優れています。IDEはプログラムを開発するための様々な機能が搭載されており、例えばプログラムの実行を特定の行で止め変数の中身を確認するというような、開発を容易にする機能が搭載されています。Jupyter Notebookは厳密には開発環境ではありませんが、1行ずつ実行しデータと結果を確認できるため、データを分析する用途で広く使われており、AI開発においても多くの場面で利用できます。Google Colaboratoryは、Jupyter NotebookをベースにしたGoogleが提供する開発環境です。
PythonでAIを開発する上では、既存のオープンソースのライブラリを利用することで、開発効率を上げることができます。 よく使われるものを表7.2にまとめました。数値計算やデータ解析などの基本的な算術ライブラリから、ディープラーニング以外の機械学習ライブラリ、ディープラーニングを支えるライブラリ、さらにタスクを解くのに特化したライブラリなどもあります。
表7.2 広く使われるライブラリ
| 名称 | 用途 | 概要 |
|---|---|---|
| Numpy | 数値計算 | 数値計算を効率的に行うためのモジュール。ベクトルや行列操作や、様々な数学関数を提供する。 |
| Scipy | 数値計算 | 科学技術計算に利用できる数値計算ツールボックス。最適化、統計処理、特殊関数等の機能がある。 |
| Pandas | データ解析 | データ解析を支援する機能を提供する。特に、表や時系列データ等に特化したデータ操作が可能。 |
| Scikit-learn | 機械学習 | SVM、ランダムフォレスト、近傍法などを含む様々な分類、回帰、クラスタリングアルゴリズムを備える。 |
| LightGBM | 機械学習 | 決定木アルゴリズムに基づいた勾配ブースティングの機械学習フレームワーク。 |
| XGBoost | 機械学習 | LightGBMと並ぶ、決定木アルゴリズムに基づいた勾配ブースティングの機械学習フレームワーク。 |
| Pytorch | 機械学習 | 機械学習、特にディープラーニングのためのオープンソースのPythonライブラリ。 |
| Tensorflow | 機械学習 | Pytorchと並ぶ、機械学習、特にディープラーニングのためのオープンソースのライブラリ。 |
| Pytorch lightning | 機械学習 | 学習・推論・検証など、複雑なディープラーニングの様々な機能を簡潔に書くためのPytorchをベースとしたフレームワーク。 |
| Optuna | 最適化 | 機械学習のハイパーパラメータの自動チューニングを行うライブラリ。 |
| TensorBoard | 実験管理 | モデルや学習の履歴の可視化、途中過程で生成されるログの表示などを行える。 |
| MLFlow | 実験管理 | 実験のライフサイクル(実験・再現・デプロイ)を支援するためのツール群。 |
| CUDA | 高速化 | GPU上での汎用的なプログラムを開発するための技術。 |
| TensorRT | 高速化 | 推論時においてNVIDIA GPUのパフォーマンスを引き出すためのライブラリ。 |
| DeepSpeed | 並列・分散 | ディープラーニング最適化ライブラリで、大規模なモデルやトレーニングを効率的に行うためのツール群。 |
| transformers | 目的特化 | 自然言語処理に特化したライブラリで、BERTやGPTなどの事前学習済みのアルゴリズムや、多様な事前学習モデルに対応。 |
| mmdetection | 目的特化 | 最新の物体検知手法が実装されたライブラリ。 |
AIモデルの学習において、初期段階ではパラメータの設定が甘くモデルの精度が低い所から始まるため、モデルの調整によって大きな精度向上が見込めます。ただし、ある程度パラメータが調整できてくると、実験で得られる精度向上の差分が小さくなってきます。それでも精度を向上させようとする場合は、最新の論文を参考にしてモデルを改善する、データ量を増やす、一度の学習で回すループの数を増やすなどの方針が挙げられます。しかしながら、これらの方針はどれもコストが掛かりやすい上、ある程度の精度が出た後では、大幅な精度向上が難しくなってきます。仮に半年の期間を掛けて数%精度が向上しても、それ自体によるビジネス的なインパクトは非常に小さいため、ビジネスにおける目標に対して精度とコストの折り合いを付けて進める必要があります。
既存の学習済みモデルを用いて転移学習をすることも考えてみましょう。転移学習は、あるタスクで学習されたモデルを、 新しいタスクに適用する手法のことを指します。具体的には、大規模なデータセットで学習済みのモデルの知識を、関連するがデータが限られた新しいタスクに利用することで、効率的に良好な性能を達成することが期待されます。転移学習により、 少数のデータしかない場合でも、ゼロから学習するのに対して学習が安定したり精度の向上が見込めます。転移学習を利用する際には、元となったタスクと、解くべきタスクがある程度関連しているかどうかに気をつけましょう。
AIモデルを学習する際には、その精度を正しく検証することは重要です。モデルの性能を確かめるためには、学習に用いたデータ以外のテストデータを用いて検証を行うことが一般的です。AIモデルの開発においては、精度が高くなるようにモデルの構成やパラメータを調整しますが、その過程でテストデータの結果を見ながら調整を繰り返してしまうと、結果的にモデルはテストデータに過度に適合してしまい、実際の未知のデータに対しての性能が低下するリスクが高まります。これを避けるためには、バリデーションデータを用意し、モデルの調整はバリデーションデータの結果をもとに行い、最終的な性能評価のみテストデータで行うという方法が推奨されます。
さらに、データリークという問題にも注意が必要です。データリークとは、モデルが学習時に本来知るべきでない情報にアクセスしてしまう現象を指します。例えば、過去のデータを使って未来の事象を予測するモデルを学習させる際に、未来の情報がモデルの学習に漏れ込んでしまうケースなどが考えられます。このようなリークはモデルの評価が過度に高くなってしまう原因となり、実際の運用時に予期しない誤差を生じる可能性があるため、十分な注意が必要です。
AIモデルが学習された後の[1] ステップは、そのモデルを用いて実際の推論を行うことです。この推論モデルは、学習モデルを基にして作成され、実際のデータに対して予測や分類を行う役割を担います。
学習の際には、高い計算能力を持つGPUを使用して効率的にモデルの最適化を行いますが、運用時にはコストの問題やデプロイ先の環境制限により、CPUやエッジデバイスを用いて推論を行うことが一般的です。このような場合、学習時と推論時でハードウェアの違いが生じるため、モデルの最適化や軽量化が必要となることがあります。
また、モデルを実際の環境で運用する中で、時間の経過や環境の変化によって、当初の学習データとは異なるデータが増えてくる可能性があります。このような状況下では、モデルの精度が徐々に低下するリスクが考えられます。そのため、定期的にデータを再収集し、モデルを再学習あるいは微調整することが推奨されます。これにより、モデルの性能を一定の水準以上に維持し、適応的に環境の変化に対応することが可能となります。
以下のAIのビジネスへの利活用に関する文章のうち、最も適切なものを選べ。
1
AIプロジェクト進行に関する文章のうち、適切なものの組み合わせを1つ選べ。
(エ) MLOpsにおいて、最も重要なことはAIシステムを本番で活用しようとしたとき、全てのプロセスを一回だけやれば良いということではなく、本番でのシステム運用時でも継続してプロセスを回すことである。
(ア)と(イ)
4
AI適用の検討およびプロセス再設計に関する文章のうち、適切なものをいくつでも選べ。
4, 6
クラウドとエッジの違いに関する以下の文章のうち、適切なものを全て選べ。
2, 3
AIプロジェクト体制を構築する際の説明として、適切なものを選べ。
4
AIモデルの開発には、AIの研究開発体制およびそれを支えるシステムを構築するエンジニアの他に、ビジネス・テクノロジー両面から方針を検討できるマネージャー、教師データを作成するためのインタフェースを開発するデザイナーなど、トータルな構成が重要です。
運用フェーズの説明に関する以下の文章のうち、適切なものを選べ。
2
ディープラーニングの学習の際に、データセットが原因で学習できない場合の理由として適切なものを全て選べ。
1, 2, 3
機械学習のモデルを構築する際には、なるべく偏りがなく、大量の品質の良いデータがあることが望ましいです。
モデルを学習する過程で、適切なパラメータの調整が行われないとどのような問題が生じる可能性があるか、次の選択肢から正しいものを全て選べ。
2, 3
不適切なパラメータを用いると、「過学習」というモデルが訓練データに対して過度に最適化され、新たなデータに対する予測能力が低下する状態になる場合があります。これは、パラメータが訓練データの特性に固執するあまり、一般的なパターンを学習できなくなるためです。
また、学習率やバッチサイズなどのパラメータが適切でない場合、学習プロセスが不安定になり、訓練中の損失関数が不規則に振動することがあります。これにより、モデルの収束が遅れたり、局所的な最小値に陥ったりするリスクが増大します。
データリークが発生するとどのような問題が起こる可能性があるか、次の選択肢から正しいものを全て選べ。
1, 3
データリークは、モデルが本来知るべきではない情報にアクセスしてしまい、それが学習過程に影響を与える現象です。例えば、精度検証に用いるべきテストデータを学習してしまうことで、本来精度が低いモデルでも、テストデータに対する検証で不当に高い精度となってしまいます。その結果、 未知のデータに対し、想定していた予測精度が出なかったり、学習に利用したデータでしか性能のでないモデルになってしまう可能性があります。
カメラからの画像認識システムを運用する中で、もしも徐々に精度が低下していったとしたら、その原因として考えられるものを全て選べ。
3, 4
通常は学習したモデルや計算機自体は時間が経っても劣化はせず同じ結果を返すと想定されます。一方、カメラ等の計測デバイスにおいては、場合によっては一部のデータが欠損し、そのデータを用いることで推論精度が落ちる場合があります。また、撮影対象についても、周囲の環境や被写体の条件が変わることで、精度が低下することもあります。精度が低下する原因を即座に特定することは難しいものの、問題が発生したときには、まずは入力されたデータが適切かどうかをチェックすると良いでしょう。