本書では、機械学習のスキルの向上を目的として、様々な機械学習の実験を行っています。本書の内容を実験する範囲では問題ありませんが、不正に拡張して使用することは絶対にしないでください。不正アクセス禁止法(不正アクセス行為の禁止等に関する法律)、偽計業務妨害、著作権法違反などに該当する恐れがあります。次に示す事項に合意した方のみ、本書をお読みください。
また機械学習を長期間実行した場合、高額な料金が請求される可能性があります。本書では一定の金額以上になりそうな時にアラートを出す手法を紹介しています。アラートが来たら実験を縮小または停止しなければ高額な請求となる可能性があります。
また本書の機械学習処理は執筆時点での技術をベースとしています。技術環境が変化した場合、機械学習処理が正常に動作しない場合があります。
本書に記載された内容は、情報の提供のみを目的としています。本書を用いた実行・製作・運用は、必ず自らの責任で行ってください。これらの情報による実行・製作・運用の結果について、著者や関係者は責任を負いません。
本書を読むにあたっての注意事項
第1章 機械学習とは
第2章 AutoML
第3章 AutoMLの初期設定
第4章 GCPのNatural Language APIで感情分析
第5章 AutoML Visionで画像分類
第6章 AutoML Tables
第7章 実験を終えてからの注意点
おわりに
参考文献
著者プロフィール
最近、人工知能の話題をとても多く見掛けるようになってきました。2015年にGoogle DeepMindが開発したAlphaGoという人工知能プログラムがプロの囲碁棋士を破ったことは記憶に新しいことかと思います。
人工知能では、未来の予想や問題解決などの知的行為をコンピュータで実行できます。近年、ビッグデータと呼ばれる膨大なデータを収集・分析する環境が整ってきました。その情報やノウハウを駆使して、未知の問題に対してもパターンを分析してコンピュータに判断させる技術の開発が進められています。あまりの急激な進歩に、現在では人工知能が私達から仕事を奪うのではないか、あるいは人工知能が人間を支配するのではないかという人工知能脅威論すら出てきています。
このような人工知能技術の発展に対して、私達はなかなか身近に感じることが難しい面があるのも確かです。人工知能を活用した技術開発といっても雲をつかむような話で、数学・統計学・アルゴリズムなどの高度な専門知識が必要ではないかと思って敬遠する人も多いです。
しかし、人工知能を活用した技術開発は専門知識を持った人だけが使えるものではなく、とても手軽に始めることができます。そして誰もが身近に人工知能を活用できるようになれば、人工知能への人々の理解や活用法も深まっていくでしょう。本書ではこの人工知能の中心となっている技術の一つである機械学習を通して、手軽に始められる人工知能開発を解説していきます。この章ではまず機械学習の基礎知識について書きます。
機械学習(Machine Learning)では、コンピュータつまり機械に入力されたデータから、アルゴリズムに従って機械に学習を行わせます。その過程で特徴やパターンなどを抽出し、新しい未知の課題に対して今まで学習した特徴やパターンを使って予測したりグループ化させたりする技術です。現在の人工知能開発で重要な技術の一つです。
わかりやすい例では、手書きの文字認識などがあります。手書き文字は書く人によって多種多様なクセが存在するため、プログラムで読み取るには明確な条件指定が困難です。しかし人間は、同じ言語圏であれば手書き文字で何が書かれているのかを大体読めます。それは小さい頃から日常的に手書き文字に触れており、手書き文字の特徴を読み取って認識できるからです。これと同じような学習をコンピュータに行わせることができれば、新しく誰かが手書き文字を書いた時にも正しく文字を予測することができます。この発想に立った技術が機械学習です。
同じように私達は、分別されていない生き物の写真を見ても、この写真は馬の写真、この写真はイノシシの写真、この写真はミジンコの写真というように何が写っているのかを読み取れます。それは生き物の写真を沢山見ていてその特徴をよく知っているため、新しい写真を見ても何の生き物であるかが推測できるからです。この写真の特徴をプログラムで条件付けするのは困難です。しかし、人間と同じような学習を機械にも実行させれば、未知の写真でも何が写っているのか予測することができる可能性があります。
機械学習という概念が登場したのは古く、IBMの人工知能研究者のアーサー・サミュエル氏が1959年に「チェッカーゲームを用いた機械学習についての研究」という論文を発表しました。この論文に関するインタビューでアーサー・サミュエル氏は、機械学習を「明示的にプログラミングすることなく、コンピュータに学ぶ能力を与えようとする研究分野」であると述べています。
機械学習はこのような期待と共に研究が続けられましたが、当時のコンピュータの計算資源では大量のデータを学習をさせるには不十分で、学術的な研究段階に留まっていました。しかし近年、コンピュータの性能は飛躍的進歩を遂げ、インターネットなどで大規模データが集積できるようになりました。そして後ほど解説するディープラーニングによって機械学習は大きな発展を遂げています。
現在、機械学習は様々な分野で活用されています。例えば以下のような例が挙げられます。
教師あり学習とは、教師用データまたは訓練データと呼ばれる正しいサンプルデータを機械にあらかじめ入力し、それを基に機械が学習を行っていく手法です。
教師あり学習で画像認識を行うには、教師用データとして、この画像は船の画像、この画像は車の画像というように正しく分類されているデータセットを機械に入力してパターンを解析させます。その後で未知の新しい画像を入力して、教師用データのパターン解析を基に分類を試みます。
あるいはスパムメールフィルタを実装する場合には、スパムメールとスパムではないメールの両方を教師用データとして与え、新しいメールをスパムかどうか分類させます。または過去の気候データと農作物の収穫量のデータを機械に与え、新たな気候データでの農作物の収穫量を予測させます。
本書では、機械学習の中でも、この教師あり学習を扱っていきます。
教師なし学習では、正解となるデータを機械に与えず、データに内在するパターンを分析する手法です。
例えば顧客の購入履歴やプロフィールなどのデータを与えて、どのような嗜好の顧客層が存在するのかを分析させます。教師あり学習とは違い、入力データには正解や分類がありません。データの中にある人間が気づかない隠れたパターンや傾向を抽出させるために用いられます。
教師なし学習ではクラスタリング・主成分分析などの手法を用いて大量の情報を構造化することを試みます。データそれぞれの関係を分析して、その中から何が相互関係が強いのかを探索的に解析していきます。マーケティング分析などで広く活用されています。
強化学習では、入力データや正解を与えるのではなく、外部環境とのやり取りの中で今回の判断が良かったのか悪かったのかを表す報酬を与える手法です。
将棋や囲碁などのプログラミング開発でも強化学習が活用されています。将棋や囲碁は対戦相手との相互作用であり、1つ1つの局面に正解かどうかを付与することは困難です。このため一連の行動の結果に対して報酬を与えて学習させていきます。
特徴量とは、教師用データとして与えるデータセットのラベルと値を指します。例えば「売上」を機械学習で予測するため「気温」「降水量」「人口」「駅からの距離」を教師用データとして与える場合、この「気温」「降水量」「人口」「駅からの距離」が特徴量となります。特徴量は説明変数とも呼ばれます。
特徴量として何を学習させるかは重要です。例えば特徴量として「通し番号」「名前」「住所」「年齢」「職業」が与えられ「身長」を機械学習で予測する時、データによっては通し番号や名前などおよそ身長と関係がなさそうな特徴量と関連度が高くなる場合があります。
しかし本来は通し番号や名前は身長とは関係がなく、通し番号や名前を特徴量として入力するとモデルの精度が落ちてしまう場合があります。このような場合、教師用データで機械学習させる前に、通し番号や名前を特徴量として除外する判断が必要になります。
このように特徴量を少なくすることで精度を上げられる場合があります。また無関係な属性を特徴量から外すことにより計算時間を短縮できます。
従来の機械学習では、この特徴量選定が職人芸のように扱われ、実装する人が何を特徴量として与え何を外すかが予測に大きく影響していました。最近はディープラーニングの進歩によって機械自身に特徴量を選択させる技術が進歩しています。
機械学習では、学習によって得られた法則性を「モデル」と呼びます。このモデルを使うことで新たな課題に分類または回帰を導き出せます。
機械学習においてはモデルの構築に最も時間が掛かります。しかし一度モデルを構築すれば、そのモデルを使って短時間で予測を導き出すことができるようになります。
モデルが作成できると実際のデータでの評価が必要です。教師あり学習の目的は教師用データから新たなデータに対して精度が高い予測を導き出すことにあります。しかし、教師用データに対しては精度が高い予測ができても他のデータではあまり高くならないことがしばしば起きます。このような状態は「過学習」と呼ばれます*1。
モデル構築時には、この過学習の可能性に留意する必要があります。
ニューラルネットワークは、人間の脳内にある神経細胞とその繫がりを、コンピュータ上に数理モデルの組み合わせで実現するものです。元々は脳科学の分野でこの研究が行われていました。
人間の脳は、ニューロンという神経細胞のネットワークで構成されています。ニューロン同士はシナプスから電気信号を受け取り、その電気信号が一定数溜まると次のニューロンへ影響を与えます。このようなニューロンの現象は0か1のデジタル信号で表現できます。
ニューラルネットワークは長く研究段階に留まっていましたが、この状況を大きく変える出来事が2012年に起きました。
2012年に画像認識のコンペである「ILSVRC*2」が開催されました。機械学習で著名な研究機関や企業が点数を競う中、初参加のカナダのトロント大学が開発したSuperVisionというプログラムが圧倒的なスコアを記録して1位となりました。このSuperVisionは、トロント大学にジェフリー・ヒルトン氏が、ニューラルネットワークを活用したディープラーニング(深層学習)の技術で実装したプログラムです。
ディープラーニングは、多数の層から成るニューラルネットワークを用いて行われる機械学習です。このニューラルネットワークを用いて、何を特徴量とするかを機械自身に抽出させます。
デュープラーニングでは特徴量の抽出を人間ではなく機械が行うようになり、人間の判断では発見できていなかった隠れた特徴量をも抽出できるようになり、画像認識の精度なども飛躍的に向上して話題となりました。
2017年3月8日の「Google Cloud Next 2017」でAI研究者のフェイ・フェイ・リー氏が「AIの民主化」を発表しました。「誰もがAIを使えるようになれば社会は大きく変貌する。そのためにはAIの民主化、つまりAIを誰もが使えるようにしなければならない。それを実現するのがGoogle Cloudだ」と語りました*3*4。
GoogleはAIの民主化を進めていくために以下の4つを進めていくと発表しました。
このうち計算能力の自動化を実現するために、機械学習に必要なコンピュータ資源をオンデマンドで利用できるCloud MLが発表されました。これにより機械学習やデュープラーニングに関する専門知識がなくても、クラウドのコンピュータ資源を利用しながらAIを活用する道が開かれました。
現在、機械学習やディープラーニングを使った人工知能を開発するには、高度な専門的知識と数学や統計学への理解が欠かせません。しかし、それらを習得するのはかなり大変なことです。
研究機関などに在籍しているわけではなく、人工知能とは関係のない仕事をしながら、数学や統計学を勉強して最新の英語論文を読んで、人工知能の技術を学んで行くにはかなりの困難があります。
しかし、最近はこのような最新の人工知能技術を扱いやすくしたサービスやツール、ライブラリなども多数公開されています。数学に関する高度な理解がなくても、これらの手段を利用することで誰もが人工知能技術を簡単に扱うことができるようになってきました。
本書で扱うAutoMLもその一つです。AutoMLを使うと簡単な設定と実装で機械学習を実行できます。
[*1] 2019年12月に東大特任准教授(当時)の大澤昇平氏が自分のツイートを過学習によるものと述べましたが、過学習にはこのような意味はありません。(戻る)
[*2] ImageNet Large Scale Visual Recognition Challenge。2000年から開催されている大規模画像認識の競技会です。(戻る)
[*3] Google CloudはAIを民主化する https://business.nikkei.com/atcl/report/15/061700004/030900184/(戻る)
[*4] 2018年にフェイ・フェイ・リー氏はGoogleを退職し、スタンフォード大学の研究職に戻りました。(戻る)