デジタル技術を利用することで人々の暮らしをより良いものにしていくという、デジタルトランスフォーメーション(DX) の実現に向けて欠かせないのがAI開発です。
そのためAI開発を検討している企業担当者も多いでしょうが、AI開発で具体的にどんなことができるのか、AI開発のやり方や使用するプログラミング言語などで疑問に思うことも多いでしょう。
そこで今回の記事では、AI開発についてだけでなく、開発の流れややり方、AI開発に必要なプログラミング言語やフレームワークなどについて解説します。
AI開発は個人でできるものではないため、基本的にはAI受託開発会社に依頼することになりますが、必要な知識をあらかじめ知っておくことで、AI開発もスムーズに進めることができるでしょう。
ぜひ最後までご覧ください。
AI開発とは「AIモデルが実装されたシステム開発」のこと
AIとは “Artificial Intelligence” の略称で、一般的には人間的なふるまいをコンピューターでシミュレートした技術である人工知能のことを指します。
通常のITシステムは、入力された値に対しての計算やデータ処理しかできませんが、AIであれば、ChatGPTを見ても分かるように、膨大なデータを基にして予測した回答を出力することができます。
AIの例で分かりやすいのが1週間後の株価を予測するというものですが、これは過去の膨大な株価のデータから株価を予想するというアルゴリズムが実装されていることから実現できることなのです。
このようなアルゴリズムが実装されたAIを「AIモデル」と呼びますが、AI開発とは「AIモデルが実装されたシステム開発」のことをいいます。
AI開発と一般的なシステム開発との違い
AI開発と一般的なシステム開発のプロセスはほぼ同じですが、ゴールに大きな違いがあります。
ソフトウェア開発の場合は、計画段階でおおよその完成形が想定される「ウォーターフォール型」で進めることが多いのに対し、AI開発では学習を繰り返しながら開発を進める「アジャイル型」という形を取るため、リリース時でも完成していないことがあります。
AIの精度を高めることでより効率的なAI開発を行うには、入力データやパラメータを調整したり修正したりするチューニングが必要なのです。
AI受託開発会社への依頼の流れ
AI開発はAI受託開発会社に依頼することが必要ですが、実際に依頼するまでに押さえておきたいポイントがいくつかあります。
ここではAI受託開発会社を選定するまでの注意すべきポイントを記載しますので、AI開発を依頼する際の参考にしてください。
AI開発依頼の準備段階での流れ
実際にAI開発を依頼する前の準備段階としてはどのような流れがあるのでしょうか。
以下に具体的な流れを解説していきます。
業務上の課題・問題の整理
AI開発依頼の準備段階でまず必要なのは、業務上の課題や問題を整理することですが、ここでは業務上の課題や問題を実際に書きだしてみるといいでしょう。
また、このような課題や問題を整理する際には、システム利用者とプロジェクトチームでは抱えている課題が異なる可能性があることから、できるだけ様々な意見を取り入れる必要があります。
開発予算・運用方針の決定
課題や問題の整理ができれば、次に開発予算や運用方針の決定を行います。
AI開発においてどれくらいのお金がかかるという相場はありませんが、AI開発の大きな目的は「売上アップ」と「コスト削減」です。
AIの学習データが多くなるほど費用は高くなりますが、ここでは現状のビジネスに合わせた予算や運用方針を決めるようにしてください。
開発・導入までの期間の設定
予算や運用方針が決まれば、AIを開発・導入するまでの期間を設定します。
AI開発では以下のようなプロセスの工数を見積もりますが、具体的な期間はAI受託開発会社が見積りの際に出してくれます。
- 要件定義
- 基本設計
- 詳細設計
- 開発・実装(プログラミング)
- 単体テスト
- 結合テスト
- 総合テスト
- システム導入
AI受託開発会社の見積もり・選定の流れ
AI受託開発会社の見積もり・選定は、以下のような流れで行います。
RFP(提案依頼書)を作成
AI受託開発会社にAI開発を依頼しようとする際には、最初にRFP(提案依頼書)の作成を行います。
RFPとは “Request for Proposal” の略称からも分かるように、発注先を選定するために企業が候補となるAI受託開発会社に具体的な提案を依頼する文章のことです。
RFP(提案依頼書)には、提案依頼概要や提案依頼内容などといったシステムの目的や概要、要件などが記載されています。
見積もりの依頼
RFP(提案依頼書)を作成しましたら、AI開発会社に見積りを依頼します。
見積りを依頼する際には、AI開発にかかる予算などを比較検討するためにも、複数のAI開発会社に相見積もりを行うことが大切です。
開発会社の選定
複数のAI開発会社から見積りをもらったら、社内で比較検討して開発会社の選定を行います。
AI開発会社の選定には、「開発実績」「開発経験」「専門性」「スピード感」をチェックすると失敗する可能性も低いですし、AI開発会社の口コミがあれば参考にしてみるのもいいでしょう。
AIモデルの仕組みやビジネスへの導入・活用方法とは
AIモデルでは、人工知能が入力されたデータを分析することで予測や判別などを行っているのですが、具体的にはどのようなアルゴリズムが実装されているのでしょうか。
以下にAIモデルに実装されているアルゴリズムについて解説します。
データの分類と回帰
AIによる株価の予測などといった「関数近似」を求めるには、過去の膨大なデータから株価の動きに関する何らかの法則性を見つけなければなりません。
何らかの法則性を見つけるために重要となるのが、収集したデータの分類(Classification)と回帰(Regression)です。
具体的には、みかんとりんごの特徴をプロットしたときに、どこで境界線を引くかが「分類」であり、時系列にプロットした株価が将来どうなるかを予測するのが「回帰」です。
AIモデルのアーキテクチャと数値モデル
こうした「分類」や「回帰」のアルゴリズムを実装するのに必要となるのが、AIモデルの構造を決める「アーキテクチャ、数値モデル」です。
AIのアーキテクチャと数値モデルには、以下のような例があります。
- ニューラルネットワーク
- ニアレストレイバー法
- ランダムフォレスト
- 決定木
- サポートベクターマシン
AIのアーキテクチャと数値モデルとして最もよく知られているのが、人間の神経回路(ニューロン)を人口ニューロンという数理モデルにで表現したニューラルネットワークです。
AIモデルの学習方法
AIモデルとして機能させるためには、目的に応じたデータを数値モデルに入力することで、関数近似を導き出す法則性(アルゴリズム)を学習させる必要があります。
2005年以降にAIモデルの精度が急速に高まりましたが、その背景には「機械学習」と「ディープラーニング」という学習方法が使われたことと、インターネットの普及により膨大なデータセット(ビッグデータ)が収集できたことがあります。
機械学習
機械学習とは、AIモデルに大量のデータを入力することで「分類」や「回帰」のアルゴリズムを構築していく学習方法です。
アーキテクチャとしてはニューラルネットワークが採用される場合が多く、データセットの入力方法に応じて「教師あり学習」や「教師なし学習」といった手法が使われます。
教師あり学習は、読み込ませるデータセットに正解としてのラベルを付けて入力しますが、正解のあるデータを用いて未来を予測させるのに向いています。
一方の教師なし学習は、読み込ませるデータセットにラベルを付けずに入力しますが、こちらはランダムなデータから隠れた法則性を見つけるのに向いています。
機械学習の活用例としては以下のようなものがあります。
- チャットボットによる問い合わせ対応
- ECサイトのレコメンド機能
- 店舗の来客分析
深層学習(ディープラーニング)
ディープラーニングとは、多層化ニューラルネットワークを利用した機械学習の手法の一つで、最近では「畳み込み層」や「プーリング層」といった構造を持っている「畳み込みニューラルネットワーク」が採用されることが多いようです。
AIモデルの開発でディープラーニングが注目されるのは、分類や回帰の関数近似に柔軟に対応することができるからです。
データを多層的に分析できるディープラーニングなら複雑なデータセットでも対応可能で、ラベル付けは必要なものの、自律的にアルゴリズムを構築してくれます。
ディープラーニングの活用例としては以下のようなものがあります。
- 医療分野での画像認識
- 自動運転での画像認識
- 顔認証システム
パラメーター調整によるAIモデルの精度の担保
ニューラルネットワークを採用した機械学習やディープラーニングのAIモデルの場合、データセットを入力しただけでは望むような回答が得られない場合もあります。
そのため望むような回答を得るには、重み係数という「パラメータ」を調整する必要があります。
具体的には、出力層からアウトプットされた値と正解の値を比較して、「入力層」「隠れ層」「出力層」をつなぐ「W」という重み係数に重みというバイアスをかけて調整していきます。
AI開発の流れ・手順・やり方
AI開発の流れや手順、やり方については以下の4つのフェーズに分類することができます。
以下にそれぞれのフェーズについて詳しく解説していきます。
構想(コンセプト)フェーズ
構想(コンセプト)フェーズでは現状の課題を洗い出し、その課題を解決するにはどのようなAIモデルを開発すればいいのかという点を構想します。
ここでは、ある特定の課題を解決するために搭載する学習方法やサービスの提供方法を選定しながら、その構想が実現可能かどうかを検討する必要があります。
PoC(Proof of Concept)フェーズ
PoCとは、”Proof of Concept” の略称で、日本語にすると「構想(コンセプト)の証明」という意味になります。
そのためPocフェーズでは、プロトタイプと呼ばれるAIの仮のモデルの開発を行わなければなりません。
poc(コンセプトの証明)では、機械学習やディープラーニングを活用するために必要なデータセットや、ビッグデータを保存できる膨大なストレージが確保されているかどうかを検証します。
実装・チューニングフェーズ
PocフェーズでAIモデルの実現性が確認出来たら、「実装・チューニングフェーズ」へと移ります。
実装・チューニングフェーズでは、実際にAIモデルを活用する環境下で必要な要件を定義し、その定義に従って開発を進めていきます。
AIモデルの実装後はテストを行って問題なく稼働するかの検証や、必要に応じてパラメータ調整やデータセットに偏りがないかどうかを確認します。
運用・改善フェーズ
実装・チューニングフェーズを終えると、運用・改善フェーズへ移行します。
運用・改善フェーズではシステムが安定して稼働するための運用や保守に加えて、必要に応じてAIモデルのメンテナンスも行います。
運用・改善フェーズにおいてはラベルありデータだけでなく、正確な割合でラベルなしデータを利用することで、効率よく精度の高いAIモデルを訓練することができます。
AI開発にマッチした開発手法は「アジャイル開発」である
AI開発は初期段階で全ての要件を定義することは難しいことから、全ての要件を定義してから設計、開発、テストへと移行するウォーターフォール型はマッチしていません。
そのためAI開発では、システム全体を細かい機能に分割し、優先度の高い機能から実装とテストを繰り返していく開発手法であるアジャイル型が採用されるこが多いです。
アジャイル開発は従来の開発手法に比べて開発期間が短いことから、アジャイル(素早い)と呼ばれています。
AI開発でよく利用されるプログラミング言語「Python」
AI開発ではさまざまなプログラミング言語が利用されていますが、その中でも最も利用されているのが “Python” です。
1991年に最初のバージョンが公開されたPythonは、機械学習やディープラーニングでも使えることから、どのような数値モデルでもPythonでひと通り対応することができます。
汎用性が高く、シンプルで可読性が高いプログラミング言語というのがPythonの強みである一方で、データソースを1行ずつ読み込むため、処理速度がやや遅いという弱点があります。
AI開発でよく利用されるフレームワーク・ライブラリ3選
Pythonの知識があればゼロからAIモデルを設計・開発することは可能ですが、あまり現実的ではないことから、最近では「フレームワーク」や「ライブラリ」を活用してAI開発を行うことが一般的です。
AI開発が急速に発展したのは、機械学習やディープラーニングに有効なフレームワークやライブラリが出てきたからだといわれていますが、Pythonではこうしたフレームワークやライブラリのほぼすべてを利用することができます。
以下にAI開発でよく利用されるフレームワーク・ライブラリについて解説します。
TensorFlow
“TensorFlow” は、Googleが開発したオープンソースの機械学習やディープラーニングのフレームワークです。
機械学習に必要なアルゴリズムはひと通り搭載されていますが、特に画像認識や音声認識、翻訳、自然言語処理などに多くのエンジニアがTensorFlowを活用しています。
NumPy
“NumPy” は、プログラミング言語のPythonにおいて数値計算を効率的に行うため、1995年に初版が公開されたオープンソースの数値計算ライブラリです。
機械学習では大量のデータを高速で処理する必要があることから、高速のNumpyを追加することでPythonの計算速度が遅いという弱点を補っています。
そのため、Pythonで数値計算や機械学習を行うのに欠かすことのできないライブラリです。
PyTorch
“PyTorch” は、Facebook社が開発したオープンソースの機械学習やディープラーニングのフレームワークです。
ニュートラルネットワークの多層化への対応やmacOS / Windows / Linuxで動作するのはTensorFlowと同じですが、違いはpythonでのプログラミングが前提になっていることです。
PyTorchは構造がシンプルで柔軟性が高い反面、APIの実装にスキルが必要なことから、研究開発目的で利用されることが多いようです。
最適なAI受託開発会社に依頼し、ビジネスでAIを活用しよう!
いかがでしたでしょうか。
現在では様々な企業がAI開発に携わっていますが、AIモデルは精度の高さがポイントになるだけでなく、設計から開発、運用や改善の全ての面において専門的な知識が必要とされます。
そのためAIの導入を検討する際には、自社の課題を解決に導くための知識やスキルを持っている企業を選ぶ必要があります。
自社にとって必要なAI開発とは何かを明確にするには、自社の課題を洗い出すことだけでなく、課題解決に最適なAI受託開発会社に依頼することが必要です。
自社の課題解決に最適なAI受託開発会社にAI開発を依頼することができれば、ビジネスでAIを有効に活用することも可能になるでしょう。