私たちの生活に身近になりつつある、人工知能技術。「AI」「機械学習」「ディープラーニング」といったキーワードはよく耳にするものの、これらの意味合いや違いを正しく理解できている人は多くありません。機械学習を理解しプログラミングまでできる人材は希少性が高く重宝されます。今後もそのニーズはますます高まっていくでしょう。
そこで今回は、機械学習とは何か、そして機械学習で一番人気のあるPythonでできることについて説明します。
機械学習とは?
「機械学習(Machine Learning)」は、AIの要素技術のひとつです。
簡単にいうと、”AIが自身で学習する仕組み”のことです。
AI=機械学習と混同している人が多いのですが、正しくはAI>機械学習ということを理解しておきましょう。
機械学習の歴史
機械学習は、1959年にアメリカのコンピューターサイエンティストであった アーサー・サミュエルによって、
「明示的にプログラムしなくても学習する能力をコンピュータに与える研究分野」
と定義されています。
この頃、1950年代〜1960年代は第1次AIブームと呼ばれる時期でした。
迷路やパズルなど難しい問題をコンピューターが解けるようになりました。しかし、これらの問題は決められたルールの中で次の一手を探すものでした。第1次AIブームでは、AIはいわゆる「トイ・プロブレム(おもちゃの問題)」しか解けないことが次第に明らかになってきました。AIに対しての失望感が広がってしまった結果、AI研究は冬の時代を迎えてしまいます。
次にAIが注目を浴びるのは1980年代に入ってから。
「エキスパートシステム」という専門知識の入ったソフトウェアが開発され、専門家(エキスパート)のような問題解決や意思決定ができるようになりました。
しかし、医者の代わりに「エキスパートシステム」で症状の診断をしようとしても、「なんかだるい」というような曖昧な事例に対して、判断することが難しいことが分かってきました。このような「常識レベルの知識」を解決できないという弱点が露呈し、AIブームはまた下火になってしまいました。
そして、2000年代以降から現在にかけて、AIは第3次ブームを迎えています。
「AI」をうたう商品やサービスが次々と世に出回るようになり、いよいよブームで終わらず人々の暮らしに定着しそうな気配です。
1990年代頃から、技術の発達によりコンピュータが膨大なデータを集めて短時間で処理できるようになりました。
このようなデータ処理性能の向上を背景として、機械学習の手法である「ディープラーニング(深層学習)」の活用が爆発的に増えました。ディープラーニングでは、第1次ブームや第2次ブームの際のAIの欠点であった、未知のものに対する判断や予測を人間の力を借りずに行うことができます。
これまでAIがずっと直面していた難問に一つの新しい光が示されたことが、現在AIとディープラーニングが脚光を浴びる理由なのです。
機械学習の分類
機械学習は以下の通り大きく3つに分類されます。
教師あり学習
教師あり学習は、「正解データ」という名の教師がいて、不明なデータを問い合わせると正解を教えてくれるイメージです。正解となる膨大なデータやルールを学習することで、新しいデータに対しても対応が可能です。
「ディープラーニング」はこの教師あり学習の発展形になります。
教師なし学習
教師あり学習と違って、教師なし学習は膨大な正解データを学習しません。教師なし学習では主にデータそのものが持つ構造や特徴を分析し、グループ分けやデータの簡略化といったことをします。
強化学習
アルゴリズムが出力した結果ごとに報酬を設定し、その「報酬が最大化」するように試行錯誤し、学習することによって精度をあげていきます。イメージとしては自転車に乗れるようになるプロセスに似ています。「乗ってみる」→「倒れる」→「乗り方を変える」→「少し乗れる(”報酬”に相当)」→「さらに乗り方を変えて徐々に乗れるようになる」の繰り返しのような感じです。
現在では、ディープラーニングと強化学習を組み合わせた深層強化学習が主流になっていて、囲碁AI「AlphaGO」が世界チャンピオンを倒すまでに成長した一因と言われています。
Pythonとは?
Pythonは機械学習で最も多く使われているプログラミング言語です。
IBMの調査によると、「機械学習における最も人気なプログラミング言語」というランキングでJavaを超えて1位になるほど機械学習における重要なプログラミング言語となっています。
Pythonは、もともと「Amoeba」という分散オペレーティングシステムのシステム管理を行う目的で、1991年にオランダのヴァンロッサム氏が発表したプログラミング言語です。現在ではPythonは、初心者から職業プログラマーまでに広く使われています。
Pythonには以下の3つの特徴があります。
- シンプルさ
- 信頼性の高さ
- 使い勝手の良さ
Pythonは数学をあまり知らない初等教育の子どもでも取り組めるほどシンプルです。誰が書いてもコードが同じようになることをコンセプトとして作られています。
誰が書いても同じということは、書きやすいだけでなく読みやすい言語とも言えます。
そして、Pythonで作られているサービスは「Google」「Facebook」「Youtube」「Evernote」「Instagram」「Dropbox」など、誰もが知っている大規模なものが多くあります。このことがプログラムの信頼度の高さを物語っています。
また、DjangoやbottleといったPythonを支えるフレームワークやライブラリが非常に充実しているのも特徴です。使い勝手が良いことも多くの開発者に支持される理由です。
機械学習においてPythonでできることとは?
Pythonは汎用プログラミング言語と呼ばれ、特定の用途に特化していない言語です。
そのため、前述のFacebook等のWEBアプリケーション作成など、Pythonで実現できることは多岐に渡ります。
機械学習においては、Pythonには豊富なフレームワークが用意されています。ここが他の言語よりもPythonが機械学習プログラミングにおいて突出しているポイントです。
例えば数値計算ライブラリであるNumpyは、機械学習において必須となる行列の計算などが簡単に実装できるようになっています。
そのほかにも、データベースに対して統計処理を行ったりさまざまなデータを分析をすることが簡単にできるPandasというライブラリや機械学習のさまざまなモデルが利用可能となっているscikit-learnなどのライブラリも存在します。
最新の手法も比較的早くライブラリに実装されるため、最新のトレンドをキャッチアップしやすいことも利点です。
Pythonを学ぶならビットラボラトリ
ビットラボラトリの「短期集中Python基礎講座」は、Pythonの基礎知識や操作の取得、データ処理の方法を集中的に学ぶことができます。まったく知識がない方でも、Pythonを使ったプログラミングに興味がある方は大歓迎です!2日に分けて丁寧に学習を進めます。
ビットラボラトリでは、通信・大手SI企業でおこなっている研修内容をオープン講座形式で一般に公開しています。企業研修などでも採用いただいているため、実践的な内容であるとご好評をいただいております。
ぜひビットラボラトリの「短期集中Python基礎講座」で、引く手あまたのPython開発者を目指しましょう。
お気軽にお電話でご相談ください。
(営業時間:10:00~18:00)
03-6273-2463