Python でクラウド AI を使ってみよう|研修コースに参加してみた
今回参加したコースは Python でクラウド AI を使ってみよう です。
AI を作るにも、自分で機械学習アルゴリズムを駆使してチューニングするものから、データをアップロードするだけなどプログラミング無しで AI を開発できる NoCode のクラウドサービスまで、自分のスキルに合わせいろいろな方法が選べるようになりました。便利になりましたね。
今回は自身で環境を構築してゴリゴリするのではなく、かと言って NoCode のようなお手軽サービスを使うのではなく、 Python をもとにクラウド上にある AI 開発支援サービスを使って、様々な AI を開発してみよう、というコースでした。難易度は “自身でゴリゴリ” と “お手軽 NoCode” の中間ぐらいで、開発者向けでした。
それだけに NoCode では実現しにくいことを Tensorflow などのライブラリを使って拡張したり、クラウド AI の GUI でサクサク、チャットボットなどを開発し Web API を追加して活用するなど、 NoCode のいいところと開発者ができることを組み合わせていました。
これが新しい AI 開発者のスキルなのかも知れません!
では、どのような内容だったのかレポートします!
もくじ
コース情報
想定している受講者 |
|
---|---|
受講目標 |
|
講師紹介
「 Kaggle で学ぶ!機械学習 モデル 開発入門」につづき、 井上 研一 さんが登壇されました。
今日のコースのアジェンダを紹介いただき、コースがスタートしました!
Python と Google Colaboratory を触ってみよう
Python 未経験者向けということもあって、簡単に特徴を説明いただいたあと、このコースで使う Python のクラウド開発環境 Google Colaboratory を紹介いただきました。
早速、使ってみます。
- Google Colaboratory で新規ノートブックを作成
- Python の開発環境としてデータサイエンスでよく用いられる Notebook を提供するサービス
- 通常のプログラムと違って、 1 行書いて実行して結果を見て、また書いて、ということができる(試行錯誤しやすい)
- 論文でも Notebook を使うことが多い
- 井上さんはこれで Watson の本を書いた
- Python で FizzBuzz を書いてみる
- プログラミング入門の有名な問題。詳しくは 「 Kaggle で学ぶ!機械学習 モデル 開発入門」でも行っていますので、ぜひご覧ください
- ライブラリを import してみよう
これで開発環境は整いました。
IBM Cloud Annotations を使って画像認識モデルを作ってみよう
今度はクラウド上にある AI サービスを組み合わせて、 Python で AI を作ってみましょう。
- 画像認識モデルの作成に使う訓練データを作るもの (アノテーション)
- 学習モデルを作るものではない
- その訓練データを Google Colaboratory に連携させることができる
IBM Cloud Annotations とは
てっきりこのサービスで学習モデルを開発するのかと思いきや、訓練データを作るサービスもあるのですね。
今回はこのサービスを使って、訓練データを作ります。
- 井上さんに事前に用意頂いた犬と猫のデータセット ( 20 枚) をアップロードしてラベル付け
- Google Colaboratory から呼び出す用の JSON を書き出し
- IBM Cloud Annotations から Google Colaboratory をボタンで開く
- Google Colaboratory で 2. で生成された設定用 JSON を実行
データセットの準備ができたので、ここからは Google Colaboratory で画像認識モデルを作ります。
Tensorflow で画像認識モデルを作る
ここからは、井上さんが用意されたサンプルコードをもとに、ちょっと Python でゴリゴリしていきます。
- 用意した 20 枚ではトレーニングデータとして少なすぎる
- 事前学習するとトレーニングデータが少なくてもできる(ファインチューニング)
- imagenet というデータセットを使って事前学習する
- Tensorflow に内包されているライブラリ Keras にある MobileNetV2 というアルゴリズムを使う
- データを前処理 (画像サイズを変更)
- 学習モデルを構築
- 今回のデータでモデルをトレーニング
- 実際に犬の画像で評価
結果は …… 残念、私の場合は「 cat 」と判定されてしまいました。
IBM Watson Assistant でチャットボットを作ってみよう
続いてチャットボットの開発です。 EC サイトなどでみる「なにかお困りですか」のようなチャットボットを作ります。
IBM Watson Assistant にログインして「 Dialog skill(対話スキル)」を選んで作成します。
- Skill を作成
- すでに日本語で会話できるレベルになっている
- Intent と呼ばれる想定される質問を追加していく
- ex. 営業時間 というラベルを作り「営業時間を教えて」などの質問を追加する
- Dialog という質問への回答を追加する
- 実はここは AI ではなく if then ( switch case ) で分けているだけ
画面右に「Try It Out!」という部分があって、試せます。ここで「いつから営業していますか」と入力すると、「#営業時間」の Intent と認識されて、「朝の 10 時から夜の 8 時までです」というメッセージが返ってきました!
Watson Assistantと外部システムの連携
返事だけでなく、予約までチャットでできるように拡張します。
IBM Watson Assistant は会話への回答だけを行うので、「予約」のような日時を聞いたり、場所を聞いたりすることはできません。
そこでビジネスロジックは外部のプログラムを呼び出して処理させます。今回はサーバレス( Function as a Service )の IBM Cloud Functions で作った Web API と組み合わせます。
- “予約” に関する Intent を追加
- “予約したい” というメッセージに “予約日” を聞く(この回答がトリガーとなり WebAPI に POST リクエスト)
- Web API のレスポンスで 「 [予約日]ですね。予約を承りました」 を返す
- IBM Cloud Functions で予約日を受け取って「 [予約日] ですね。予約を承りました」と返すだけのアクションを作成
- IBM Cloud Functions でエンドポイントを設定 ( GUI で 2 ~ 3 クリックでできる)
- IBM Watson Assistant から Webhook を追加
- IBM Watson Assistant で “予約” の子要素の Intent を作成
これも試すと、「予約を承りました」というメッセージが返ってきました。これだけの操作で、ここまでできるんですね。
さらに、これを公開できるので、 Google Colaboratory から Watson SDK をインポートして動かしてみます。
これまた、「ノーコード ( NoCode ) で体験する AI 開発のキホン」のときと同じようにサイトに埋め込めるようなので、この記事に入れてみました(右下のチャットアイコンを押すと動きます。 “営業時間” に関するものや “予約したい” とメッセージしてみてください)。
こういったお土産があるところがうれしいですね。ぜひぜひお試しください。
まとめ
「ノーコード( NoCode )で体験する AI 開発のキホン」と「 Kaggle で学ぶ!機械学習 モデル 開発入門」の中間のような、開発者向けのコースでした!
プログラミング無しではまだまだ難しいところを、 Python を使って開発者がクラウド AI をもとに少しコードを足したり設定することで、データセットを拡張して画像認識モデルを作成できたり、簡単にチャットボットが開発できました。
「 NoCode + プログラミング知識 + ちょっとした AI の知識」で実用的な AI を開発できるようになり、これは新しい AI 開発者のスキルモデルかも知れないと感じられたコースでした!
label SEカレッジを詳しく知りたいという方はこちらから !!
IT専門の定額制研修 月額28,000円 ~/ 1社 で IT研修 制度を導入できます。
年間 670 コースをほぼ毎日開催中!!
SEプラスにしかないコンテンツや、研修サービスの運営情報を発信しています。