スマホや各種家電製品での活用により、私たちの毎日の生活においてとても身近な存在になったAI(人工知能)ですが、一体どのような仕組みになっているのかちょっと気になりますよね。
Siriのような会話が楽しめるAI(人工知能)アプリを自分でも作ってみたい、と思われている方も多いのではないでしょうか。でも、AI(人工知能)なんて一体どうやって作れば良いのでしょうか。
AI(人工知能)の開発にあたっては、プログラム言語、数学および統計学の知識が必要とも言われてます。でも、実際のプログラムソースはいいから(見たくないけど)、ザックリとした手順くらいは知りたいと思っておられる方も多いでしょう。
そこで今回は、AI(人工知能)アプリ開発の手順例について、ザックリレベルですが紹介いたします。
機械学習の大まかな作業手順について
まず最初にAI(人工知能)の中心をなす技術である機械学習のモデルを実装する大まかな手順について見てみましょう。
- 学習データ(訓練用データと検証用データ)を準備する
- 訓練用データによる学習を行い、学習済モデルを作成する
- 検証用データを学習済モデルに適用し判定処理を行う
大まかな手順は上記の通りですが、(3)の判定処理の結果をもとに(2)の学習時のパラメータの見直しを行い、判定処理結果が満足できるようになるまで上記(2)(3)を繰り返します。以下に上記(1)および(2)における留意点について説明します。
(1)学習データ(訓練用データと検証用データ)を準備する
例えば学習データ10,000枚準備する場合、訓練用データ9,000枚と検証用データ1,000枚に分けて準備します。(2)学習で使用するのは訓練用データのみで、検証用データは使用しません。
(2)訓練用データによる学習を行い、学習済モデルを作成する
ここで学習の方法として、どのアルゴリズムを使うか選定する必要があります(例:線形回帰/ニューラルネットワーク)。
なお、学習は訓練用データ9,000枚について1度に行うのではなく、例えば9,000枚からランダムに50枚抽出し学習する工程を10回繰り返す作業を1セットとして100セット繰り返し、更にこの100セットを20回繰り返す、といったイメージです。
学習は同じデータでも1度だけではなく繰り返すことにより学習効果が上がること、また、9,000枚について一気に学習するよりも、細かい単位に分けて学習する方が効果的であることも分かっています。
AI(人工知能)アプリ開発に必要なモノとは
次に、AI(人工知能)アプリ開発に必要なモノについて整理します。
- パソコン(AI(人工知能)アプリ開発はPCにて行います)
- 学習データ
- 開発用言語(Pythonなど)
- フレームワーク
- スマホ(作成したアプリの動作確認用)
ここで「フレームワーク」という新しい単語が出てきましたね。次に、フレームワークについて簡単に説明します。
フレームワークとは
ここではフレームワークについて、先程説明しました機械学習モデルの大まかな実装手順をもとに説明します。
- 学習データ(訓練用データと検証用データ)を準備する
- 訓練用データによる学習を行い、学習済モデルを作成する
- 検証用データを学習済モデルに適用し判定処理を行う
上記(1)~(3)の手順を一からすべて手作りで作成するためには統計学、数学および各種アルゴリズムの知識が必要であり、初心者でなくとも敷居が高すぎて現実的ではありません。そこで、AI(人工知能)アプリ開発を効率良く行えるよう、便利な道具集として提供されているのがフレームワークです。
フレームワークは、学習データを取り込んでくれる道具、各種アルゴリズムに対応した学習を実行してくれる道具、検証用データの判定結果を算出してくれる道具などを提供しており、これらの各種道具を使用する(具体的にはプログラム言語で呼び出す)ことにより、AI(人工知能)アプリ開発を効率良く行うことができます。
フレームワークの例としては、TensorFlow (Google)、Cognitive toolkit (Microsoft)、Mxnet (Amazonが公式サポート)、Keras、Chainerなどがあります。今回紹介する手順例ではGoogle社のTensorFlowを使用した例について紹介します。なお、TensorFlowで開発したアプリをスマホに乗せるためにTensorFlow Liteも併せて使用します。
AI(人工知能)アプリ開発の手順例
実際のAI(人工知能)アプリ開発の手順例は以下のとおりです。今回開発するのは1桁手書き数字の画像判定処理アプリです。具体的な開発のイメージをご理解いただけるようザックリとした手順記載となっておりますが、ご了承ください。
(1)開発言語PythonをPCにインストールします(TensorFlowの推奨言語はPython)
(2)フレームワークTensorFlowおよびTensorFlow LiteをPCにインストールします
(3)スマホ向け開発環境であるAndroid Studio3をPCにインストールします(TensorFlow Liteの動作に必要)
(4)PythonによりTensorFlowの各機能の呼び出し処理を定義します(プログラム作成)
プログラムの大まかな手順は以下のとおりです。
(4-1)学習データ(訓練用データと検証用データ)を準備し読み込みます
―> Googleが公開しているテスト用の1桁手書き数字画像データ(MNISTデータセット:訓練用データ6万件、検証用データ1万件)を使用(4-2)学習のアルゴリズムを選定します
(4-3)訓練用データによる学習を実行します(6万件を一気にではなく、繰り返し処理により少しつづ学習します)
(4-4)評価方法を定義します
(4-5)検証用データによる評価を行います
(5)(4)で出来た学習済モデルをTensorFlow Liteでスマホ用に変換します
(6)スマホで動作確認を行います
以上、ザックリレベルの手順紹介でしたが、今回はAI(人工知能)アプリ開発の手順例について紹介しました。
- AI(人工知能)アプリ開発に必要なモノ:開発用PC/学習データ/開発言語/フレームワーク/動作確認用スマホ
- AI(人工知能)アプリ開発の手順例:
1)開発言語/フレームワーク等のPCへのインストール
2)開発言語によるフレームワークを使用をしたプログラム作成と学習/評価の実行
3)スマホ上での動作確認
最後にAI(人工知能)アプリ開発において留意すべき点について紹介します。それは、AI(人工知能)に向いている処理と向いていない処理があるということです。
文章/音声/画像/動画といった非構造化データはもともとコンピュータが苦手なデータであり、解決策としてAI(人工知能)が登場した経緯があります。一方でRDB/Excel/CSVといった構造化データはもともとコンピュータが大得意な領域です。
人間 vs AI(人工知能)といったイメージがありますが、非構造化データを扱うためには人間とAI(人工知能)が協力しながら対応する(試行錯誤を繰り返しながら精度を高める)必要があります。
今回ご紹介したアプリ開発に止まらず、興味のある方はどんどんAI(人工知能)アプリ開発にこれから慣れ親しんでいきましょう。
参照元
機械学習の仕組み (Vol.4)
tensorflowの初心者向けMNISTチュートリアルをやってみた。
Googleが提供する機械学習ライブラリ TensorFlow を1時間で試してみた
オープンソースのAI・人工知能/TensorFlowとは
TensorFlowチュートリアル - ML初心者のためのMNIST(翻訳)
機械学習で便利な画像データセット「MNIST」を丁寧に解説!
【Android】TensorFlow LiteのMobilenetサンプルコードをビルド&実機インストール・実行する方法と雑感 (Android Studio 3.0)
AIをビジネスに活用する際のポイント(AIに何を期待するか)
Python: TensorFlow のチュートリアルでソフトマックス回帰を試す