皆さんは機械学習についてご存知でしょうか?
ここ最近ではGoogleの囲碁AI「AlphaGo」がプロ棋士に勝利するなどテレビのニュースやメディアでも大きく取り上げられる話題の1つです。本記事では機械学習について全く知らない方に機械学習とは何かから、どうやってプログラミング未経験から機械学習を学習していければ良いかまでご紹介します。
この記事の目次
機械学習(マシンラーニング)とは
機械学習とAI(人工知能)の違いとは?
機械学習は人工知能の研究課題の1つです。
人工知能というと皆さんはまず何を思い浮かべますか?私の世代ですぐに思い浮かべるであろう人工知能はこちらです。
出典: https://www.flickr.com Photo:Dick Thomas Johnson
人工知能には「強いAI」(汎用型人工知能)と「弱いAI」(特化型人工知能)と呼ばれるものが存在します。
ターミネーターは強いAIに該当し、特定の作業やタスクに限定せず人間と同様の、あるいは人間以上の汎化能力を持ち合わせているとされています。2017年現在においては、まだ研究段階であり、実用化はされていません。
特化型人工知能は、特定の分野に特化したものです。代表的な特化型人工知能は、囲碁に特化したAlphaGoです。特化型人工知能は、実用化が進んでいます。
機械学習の学習手法
機械学習には様々な学習手法があります。ここでは「教師あり学習」「教師なし学習」という2つの手法をご紹介します。
教師あり学習とは?
教師あり学習とは、予め分類情報が付与されたデータを元にAIが機械学習を行う手法です。
例えば、AIに果物の画像を見分けて欲しいとします。
教師あり学習ではまず始めに、人間が答え(果物の名前)付きで画像をAIに見せて、学習させます。学習が終わったAIは未知の画像を見せられた時に過去の学習を元に画像の種類を予測出来る様になっています。
まとめると、教師あり学習とは、正解があるデータを元に行われる機械学習であるということです。
教師なし学習とは?
教師なし学習とは、分類分けされていないデータを元にして機械学習を行う手法の事です。データの中にあるパターンやルールを見つけ出し、分類することが目的です。
データをある共通の特徴を持つグループに分けたりグルーピングしたり、データ同士の頻出パターンの発見をすることに用いられます。
たとえばあるネット通販の購入データから平均購買単価が高いグループと、平均購買単価が低いグループの特徴を見つけたり(グルーピング)「ビールとおむつが一緒に買われることが多い」ということを発見したり(頻出パターンの発見)という風に活用されます。
出典:テックキャンプ プログラミング教養
機械学習と深層学習(ディープラーニング)
機械学習には、ディープラーニングと呼ばれる手法があります。ディープラーニングとは具体的に、ディープニューラルネットワーク(DNN)を用いた機械学習のことを指します。
今までの機械学習と異なるのは、入力層と出力層の間にある、情報の伝達と処理を行う中間層が多層に存在する事です。
Deep Learningは予測の精度や汎用性が非常に高い代わりに、実践には大量のデータが必要となることが特徴です。
引用:人工知能の仕組み インフォグラフィックでわかりやすく解説#01
機械学習の実例
人間の代わりに顧客対応をするAI
IBMの人工知能「Watson(ワトソン)」は、コールセンターで人間のサポートをする為に導入されています。
三井住友銀行ではコールセンター全席でWatson(ワトソン)によるサポートが導入されています。顧客からの問い合わせをリアルタイムで文章化し、業務マニュアルやQ&A集から回答候補を問い合わせ担当に提示することで、導入前よりも迅速で正確な回答を実現しています。
医者よりも正確な診断で患者の命を救うAI
「Watson(ワトソン)」は同じく、医療の現場で病気の診断に利用されています。医者よりも正確な診断を下すこともあるとされています。
たとえば医者が急性骨髄性白血病と診断した患者を別の病気であると見抜き患者の命を救うのに役立ちました。このWatson(ワトソン)は最新の医学論文データや、臨床医療のデータを取り込んでおり、数十万件の医学的根拠を学習しており、事例の様に経験を積んだ医者よりも的確な判断を下す事もあります。
画像を認識し、自動運転を可能にするAI
車の自動運転にもAIは活用されています。
アメリカにある半導体メーカーのNvidia Corporationは自動運転の開発プラットフォームを提供しています。
ディープラーニングと画像認識機能により、駐車場の中から空いているスペースを探し出して駐車をすることや、運転手からスマートフォンで呼び出しを受けて、運転手の元まで自動で走ってくることなどが可能になっています。
機械学習のプログラミング
ここまでで機械学習とは何か、今の時代様々な産業に活かすことが出来ていることをおわかり頂けたかと思います。そんな機械学習も実はプログラミングをしなくても体験出来きるサービスがあります。
プログラミング不要で機械学習を体験できるサービス IBM Watson(ワトソン)
今回はWatson(ワトソン)の画像認識を体験してみましょう。
画像認識の機能では読み込んだ画像が何を表しているのか確率が高い順から羅列して表示してくれます。例えばバナナの画像を読み込んだ場合は、果物、食べ物、バナナである確率が高いことが確率で表されます。
それでは一度以下よりやってみましょう。
1.下記URL(英語)にアクセスします
・https://visual-recognition-demo.mybluemix.net/
2.下図の通り、画像を他のサイトから画像URLでとってきます。
Watson(ワトソン)にあるサンプル画像を選択していただいても構いません。
3.画像URLを貼り付けてEnterを押しましょう。
4.以下のような結果が得られます。
上記の結果であればengineやmachineの確率が高く、正しく認識されているような結果が得れました。他の例も試していただくと分かるのですがかなり的確です。しかしこれらを実際にサービスとして利用するにはプログラミングを使ってサービスに組み込む必要があります。
機械学習に使うプログラミング言語はPythonが主流
Pythonでは、豊富なライブラリが公開されています。Ruby言語などと同じように、ウェブサービス開発としても扱うことが出来ます。
世界的に有名なSNSであるInstagramも、ウェブサービス開発の言語としてPythonを使用しています。
Pythonはまとめると以下全てのカテゴリーのライブラリがあります。
・数値計算・統計処理
・画像、音声、動画認識
・自然言語処理
・ウェブサービス開発(フレームワークなど)
・ネットワーク
・データベース
Googleの機械学習ライブラリTensorFlowもPythonで使用できます。
プログラミング言語Pythonを扱うことができれば、機械学習のノウハウの習得は比較的容易と言えるでしょう。
機械学習のアルゴリズム
機械学習アルゴリズムには膨大な種類があります。
アルゴリズムはそれぞれ異なる特性を持っています。データ分析を行う際には、解決したい課題や準備できたデータによって最適なアルゴリズムを選ぶ必要があります。
以下2つの例をご紹介します。
例1) プログラミングスクールを経営しており、来月の集客予測を行うとき
「回帰分析」の種類の中のアルゴリズムを使用します。回帰分析では線形回帰やベイズ線形回帰などの機械学習アルゴリズムがあります。
・線形回帰
複数の変数における相関関係を直線モデルによって説明しようとする分析手法です。線形回帰分析に関して興味が有る方は下記の外部サイトを御覧ください。
・http://blogs.teradata.com/international/ja/hhg9/
・ベイズ線形回帰
そんな線形回帰を確率化するのがベイズ線形回帰です。詳しく知りたい方は下記の外部リンクをご覧ください。
・https://qiita.com/ysdyt/items/05a884354741bd9ca82b
例2) 自分のInstagramで友人の写真を友人毎に分けたい
「分類」の種類の中のアルゴリズムを使用します。分類ではロジスティック回帰や決定木の機械学習アルゴリズムがあります。
・決定木
樹形図、またはツリー構造と呼ばれる図を作り出し、アウトプットには分類を行なうためのルールを作成します。
決定木の結果として、以下のようなツリー構造が表示されます。
出典:テックキャンプ プログラミング教養
・ロジスティック回帰
ロジスティック回帰は分類分析に使用されるアルゴリズムです。主に2クラス分類に使われます。例えば真(true)か偽(false)という二値論理に関する結果を分析することは、2クラス分類の1種です。
回帰とは一般にはもとの位置または状態に戻ること、あるいはそれを繰り返すことを指します。
ロジスティック回帰に関して興味が有る方は下記の外部サイトを御覧ください。
・http://blogs.teradata.com/international/ja/hhg10/
PCがあればすぐ開始!機械学習が学べるおすすめ書籍・オンライン動画
今世界規模で機械学習に学ぶことに関して、本やオンライン学習サービスが非常に充実してきており、日本語版もかなり充実しておきており気軽に学習を始めることが出来ます。
おすすめの書籍やオンライン講座をご紹介します。
【ゼロから始めるデータ分析】ビジネスケースで学ぶPythonデータサイエンス入門
出典:【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門
こちらの講座はいきなり技術的な知識を積み上げていくのではなく、機械学習を始めとした人工知能がどう活用されていくのか、アウトプットを取り入れながらの学習できます。機械学習未経験の方が取り組みやすい内容で構成されています。
日本のデータサイエンティスト界で有名なDeepAnalyticsが保有するビジネスデータをもとにした課題で、実践的な演習に取り組み実践できます。
Pythonで機械学習:scikit-learnで学ぶ識別入門
出典:Pythonで機械学習:scikit-learnで学ぶ識別入門
この講座では、広島大学准教授の方が解説します。
本コースの目標は「機械学習でデータを識別するための一連の流れ(データの準備・前処理・識別器・評価など)を理解することです。scikit-learn(サイキットラーン)で学ぶことにフォーカスされています。
scikit-learnは、機械学習に特化したライブラリです。教師あり学習、教師なし学習で用いられる様々な分類、回帰、クラスタリング(分類)アルゴリズムをすぐに利用できる様に準備している他、機械学習の為のデータなども用意されています。
Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎
上記のUdemyの講座と被りますが、一緒に学習されると理解を深めることが出来ます。
本書籍は実際に手を動かし、機械学習を実践できます。Pythonの機械学習分析において最低で抑えておくべき知識が全て網羅されています。
特に特徴量エンジニアリングとモデルの評価と改善といった実務で必要になる知識が多く含まれています。
しかし機械学習の数理やPythonの知識は別の本で学ぶ必要があるため、上記のUdemyの学習後に本書籍を読まれると理解が深まります。
仕事ではじめる機械学習
出典:仕事ではじめる機械学習
機械学習エンジニアにとって「機械学習を説明できる事」と同等なレベルで「機械学習を使わない方法を提示できる事」が大事な力であることを主張する本です。
実際に業務で機械学習を利用してきた方々の知恵が詰まった本になっています。本書を読むことで機械学習を実務で使ってみようという人が失敗を減らすことができるようになります。
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
タイトルの通り、機械学習の中でもディープラーニングの内容を学習します。
Pythonを環境構築するところから書いており、Pythonや機械学習の未経験者でも躓くなく学習できるようになります。この本では紹介した手法について手厚く解説を行い、ソースコードも公開しています。
またこの本は基礎からこの本だけで完結できるよう解説されています。ただし、大学初学年の数学知識は必要とされます。
全くのプログラミング未経験者が機械学習を使用したサービスを作るため必要な知識
人工知能はWebサービス開発やアプリ開発の分野からも非常に注目されており、一般向け・法人向けの人工知能サービスも多数登場しています。
全くの未経験者が機械学習を使用したサービスを作るには、データサイエンスとWebサービス開発の知識が必要になります。
データサイエンス
機械学習向けに使用するデータを収集するには、自前でデータを用意するか、オープンソースのデータを使用する必要があります。
一般的に機械学習をビジネスシーンで用いるには、自前で用意したデータが必須です。一方、研究目的などに使う場合にはオープンソースのデータも使用されます。後者の場合、DeepAnalyticsをはじめとするオープンソースのデータを使用可能です。
データには欠陥があったり、不正なデータが存在する可能性があります。そのため用意したデータは分析しやすくするために、事前に整理する必要があります。これにはデータ分析に使用されるツールであるJupyterなどを使用し、データを整えるスキルが必要です。
また整えるだけでなく、データの特徴を見極めた上で予測に必要なデータを定量的に推測し、実際のビジネスの場面で活かせる様にすることが必要です。
Webサービス開発
データサイエンスを学ぶだけでは実用的なサービスを作ることが出来ません。
機械学習を使用したサービスを開発するためには、フレームワークを使用したWebサービス開発の知識を習得することが最短経路になります。
世界的に有名でかつ最も学習コストが低いRubyであればRuby on Railsが、PythonであればDjango(ジャンゴ)がおすすめです。
しかしDjangoの文献は日本語の文献が少ないため、Ruby on Railsから学習してみることが最も妥当です。
まとめ
機械学習を身につけるにはデータ収集やデータ整理など、多くの知識を学ぶ必要があります。大学などでは数年かけて学ぶ内容なので、無理もありません。
少しでも機械学習に興味を持ったなら、まずはプログラミングスクールに通うのがおすすめです。下記の記事におすすめのスクールについて掲載していますので、参考にしてみてください。
はじめての転職、何から始めればいいか分からないなら
「そろそろ転職したいけれど、失敗はしたくない……」そんな方へ、テックキャンプでは読むだけでIT転職が有利になる限定資料を無料プレゼント中!
例えばこのような疑問はありませんか。
・未経験OKの求人へ応募するのは危ない?
・IT業界転職における“35歳限界説”は本当?
・手に職をつけて収入を安定させられる職種は?
資料では、転職でよくある疑問について丁寧に解説します。IT業界だけでなく、転職を考えている全ての方におすすめです。
「自分がIT業界に向いているかどうか」など、IT転職に興味がある方は無料カウンセリングにもお気軽にお申し込みください。