ひろゆき)Tweetはじめに前回までは、現在の人工知能の基礎的な技術を理解するためにハードウェア、ライブラリ、AIプラットフォームといったベーシックな要素を見てきました。今回からはいよいよ第2部に入ります。第1回でも紹介したように、第2部では「これからのAI」について語っていきます。今回は、機械学習の仕組みや人工知能をビジネスに活用するためのポイントについて解説します。現在、多くの人が「AIを使って何かをやりたい」と考えています。本来は「これをやりたいのでAIを使う」という順番で考えるべきですが、今の局面は”人工知能の活用”を前面に出してものを考えても良いと思います。その際に最初にぶち当たる壁が大量な学習データの用意です。AIも最初は赤ん坊のように無垢で無知です。学習させることによって初めて役に立つ存在になります。そのため、とにかくそれなりのボリュームの、それも質の良いデータがなければ学習できません。図1に機械学習を行う際に心得ておくべき3つのことを掲げています。今回は1番目の「データの準備、クレンジング」を中心に説明します。図1:機械学習を行う際に心得ておくべきこと学習データを用意する方法まず、どのようにして大量データを用意するかを考えてみましょう。一般に学習データを用意する方法としては、図2のような手段が考えられます。図2:学習データを用意する方法(1)自社のデータを活用する既に自社の中にそれなりのデータがあるので、これらを使って有益なことをやれないか。いう発想でAIを活用することを考えるのが基本でしょう。(例1)小売業の需要予測3年間の販売データのうち、2年分で学習して直近1年間の需要予測と実績の近似性を確認します。このとき、d.の公開されている気象庁のデータなども組み合わせます。因子要因をきちんと把握して近似性が高くなれば、今後の需要予測に使えます。過去4年に発生した品質不良品のデータが一定量あるならば、そのうち80%と正常画像を混ぜて教師あり学習を行います。残り20%をテストデータとして判定精度を確認し、認識精度が高ければ今後の自動品質チェックに利用できるようになります。(2)地道に学習データを入力するAIの仕組み(分類器)を作成するために、手動または自動で学習データを地道に作成してゆく方法です。利用できるデータがない場合は、この正攻法しかありません。アクティブラーニングも組み合わせて学習させ続けるうちに、少しずつ応答が高度化され役に立つ存在になっていきます。(3)世の中にある学習モデルを使う画像認識や自然言語理解などでは、さまざまな学習済みモデルが用意されているので、これらを使わない手はありません。イチから学習させる場合においても、学習済みモデルを使った転移学習を使えば少ないデータで学習できます。第2回で紹介したResNetやInceptionなどの学習済みデータを使えば、人物の検出や特定などをすぐに覚えてくれます。写真の顔写真を覚えさせることにより、いちいち点呼を取らずとも誰が出勤しているか一瞬で記録できます。(4)公開されているデータ(有償/無償)を利用する人工知能の活用方法のうち、予測(Prediction)では自分たちのデータだけでなく、過去の市場のデータや気象のデータなどを利用して学習します。過去のイベント来場者データに気象庁が公開している気象データやTwitterが提供しているつぶやきのデータを重ね合わせて因子要因を見つけ出し、今後のイベントの来場者を予測します。(5)インターネットでスクレイピングするスクレイピングとは、インターネット上の各サイトをクロール(順繰りにWebサイトにアクセス)して、サイト上の情報を抽出するソフトウェア技術です。(例)ナレッジデータベース作成インターネット上のホームページをクロールして、欲しい情報をテキスト解析して取得するようなスクレイピングでナレッジデータベースを作成します。データのクレンジング日本の女性なら誰でも知っているクレンジング(Cleansing)という言葉は、洗顔の前に化粧を落とす意味の和製英語ですね。Cleansing)は海外でも一般に使われている英語で、データを利用する前にデータを変換・整理したり不適切なデータを除去したりする前処理を意味します(図3)。機械学習においては、このデータクレンジングが非常に重要です。学習データは単に量が多ければ良いというものではないからです。不適切な学習データをそのまま与えると、それが悪影響となり却って検出精度が低下してしまうので、学習データに対して適切なクレンジング処理を行います。データクレンジングではどのようなことに注意すべきでしょうか。不適切なデータとはどのようなデータを言うのでしょうか。画像認識を例にして、クレンジングのポイントをいくつか説明しましょう。(1)人間でも判定に困るデータは食わせない一概に単に写りが悪いからと言って悪いデータとは限りません。実際のデータで写りの悪い画像を判定する必要があれば、この後説明する”水増し”などの技術を使ってきちんと学習する必要があります。人間でも判定できないような画像はAIでもうまく特徴点を見つけられません。そのような画像データで学習させると悪い影響を与えることが多いです。顔認証させているつもりなのに、AIは背景にある時計を対象にしていた、というようなミスマッチはよく起こります。対象オブジェクトを検出しているかチェックして、トンチンカンな検出しているデータは正しく検出できるように調整するか削除します。(3)間違ってラベル付けしない間違ったことを教えれば当然間違って覚えます。人が手間をかけて準備したデータではあまり起こらないと思いますが、どこかにあるデータをインポートして学習データに使う場合はこうしたミスが起こり得るので注意してください。(4)間違われやすいデータも学習するAやBがよくXに間違われるという場合、AやBの学習よりもXを正しく学習させる方が効果的な場合もあります。AやBのデータだけでなくXの学習データも十分に必要となる場合があるので、Xのデータを十分確保できるかも考えてください。(5)未知(本番)データもクレンジングする画像認識の学習では、画像のサイズや向きなどがバラバラだと学習しにくいので、これらをクレンジングしてできるだけ揃えます。これから判定する本番データにも同様のデータがある場合は、それらも自動クレンジングしてから判定させる処理が必要となります。(6)未知(本番)データを意識する本番のデータがどのような画像なのかを意識して学習させます。製品の外観検査なら大きさが一定の画像となるでしょうが、消費者がネット上にアップする画像ならサイズや角度、鮮明度などもまちまちです。世の中にある学習済みモデルは、特徴点を検出しやすいように少しずつ角度をずらして画像を撮ったりしています。自分で学習させる場合も、場合によってはそのような配慮が必要です。ここまで品質の良いデータが大量に必要と説明してきましたが、この1、2年で少ないデータで機械学習させるための技術が次々と出てきて、今のニューラルネットワークのライブラリには標準でこれらの技術を利用できるようになっています。その中から代表的なものを2つ説明します。Augmentation)水増しというとなんだか不正請求のような悪いイメージがつきまといますね。機械学習におけるデータの水増しは少ないデータでも学習精度を上げるためのテクニックで、特にCNN(畳み込みニューラルネットワーク)などを使った画像処理で効果を発揮します。水増しは、元の学習データに線形変換を加えてデータの数を増やすことを言います。線形変換とは、左右反転したり、位置をずらしたり、ノイズを増やしたり、コントラストを変えたり、ズーム・変形したりする処理です。図4を例に説明しましょう。バラとボタンの花の画像が各々1000枚あったとき、通常なら学習データ各700枚、評価データとテストデータ各100枚ずつ配分するところを、学習データを4倍に水増しして各2800枚用意します。ここでは左右反転、コントラスト変換、位置ずらしの3パターン用意したとしましょう。その結果を通常の認識率と比較して、認識率が高まっていれば”水増し成功”です。図4:少ないデータでも認識率を高められる水増しただし、やみくもに水増しして数を増やせば良いかと言うと、そう簡単な話ではありません。実際に判定する画像にないような学習データを食わせてしまうと、かえって認識率が下がってしまいます。手書き文字認識のためのデータセットMNISTを使って文字認識を学習する際に、左右反転などの水増しを使うのはおバカさんということになります。Fitting)に陥りやすいです。過学習とは、社会適応力がないガリ勉君のようなもので、学習に使ったデータ認識に特化し過ぎて、汎用的なデータの認識率(汎化性能)が落ちてしまうことでしたね。過学習を防ぐためにドロップアウト(Dropout)と呼ばれる機能がよく使われます。これはInput−Hiddun(隠れ層)−Outputというディープラーニングの構造において、学習を繰り返す際に隠れ層のノードの一部を無効にするものです。Learning)と言います。ドロップアウトは疑似的なアンサンブル学習です。学習を繰り返すたびにランダムにノードの一部が非活性となるので、学習器の構造が毎回少しずつ違います。それらを総合して学習する方が、ガチガチに同じ構造の学習器で学び続けるよりも汎化性能がアップするのです。Learning)少量データで学習させる方法として、水増しと並びよく使われる技術が転移学習です。この言葉も癌の転移などいまいちなイメージがありますが、これは既にある優秀な学習済みモデルを利用して学習するという、効果が大きい技術です。2014年の画像認識コンテストILSVRCで優勝したGoogleNetは22層のCNN(畳み込みニューラルネットワーク)モデルでしたが、これをベースにした48層のInception-v3という学習済みモデルがあります(図5)。転移学習は、訓練された特徴抽出部(ニューラルネットワーク)を再利用します。再利用させる層は指定可能で、例えば図5では45層をフリーズ(凍結)し、最後の3層を切り捨てて新たな層に置き換えています。フリーズした層はそのまま既存モデルで固定され、最後の3層だけで追加学習しますが、すでに大量の画像で十分に学習して”出来上がっている”重みをそのまま流用できるため、少量データかつ少ない回数で学習できるのです。図5:Inception-v3を使った転移学習アクティブラーニング現代の教育では、学ぶ人が能動的かつ参加型で学べるアクティブラーニングという学習スタイルがブームです。響きの良い言葉が出てきましたね。ここで言うアクティブラーニングは、それとは全く別で機械学習における学習スタイルを指しています。機械学習の基本スタイルは、図4のように最初に学習させて学習モデル(分類器)を作成し、それを使って未知のデータの判断・推定を行うものです。この判断結果をそのまま100%信頼する場合もありますが、人間が確認を行って最終的な判断を行うことも多いです。AIが判断したものが誤っていた場合に、人間が正しく修正したデータを追加の学習データとして学ばせるのが機械学習におけるアクティブラーニングです。アクティブラーニングのパターンには、次の2種類があります(図6)。すべて人間がチェックする人間がAIの判断結果をすべてチェックし、誤りを見つけて修正したデータを学習データとして利用する。AIが自信ないもののみ人間がチェックする人間はAIの確信度(Confident)が低いもののみをチェックし、誤りを見つけて修正したデータを学習データとして利用する。アクティブラーニングでは、リアルタイムで追加学習させることも考えられますが、人間が修正したデータを一定期間(量)ためてからバッチで学習させるのが普通です。図6:機械学習におけるアクティブラーニング今回は、機械学習の仕組みを理解し、学習データの重要性やデータクレンジング、少量データで学習する技術などを説明しました。次回は、機械学習と深層学習でよく使われるアルゴリズムについて解説します。Browser」を開発・リリース。Designer」など、独創的なアイデアの製品を次々とリリース。最近は、AIを利用したサービスに取り組んでいる。ITの連載をまとめた「これからのSIerの話をしよう」「エンジニアなら知っておきたいAIのキホン」を刊行。「日本のITの近代化」と「日本のITを世界に」の2つのテーマをライフワークに掲げている。ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。VeloCloudが選ばれる理由SD-WANとはなにか。Linuxエンジニア育成への思いF5とNGINXの組み合わせで、サービス公開をよりセキュアに。ITがお届けするポッドキャストです。