Pythonは得意ですか?Pythonを使いこなしている方には、人工知能(AI)技術を勉強してみることをおすすめします。なぜかというと、AI技術は現在非常に注目されている分野で、GoogleやMicrosoftなど多数の大手企業が積極的に採用を始めているからです。そしてPythonはAI技術を学ぶには適した言語で、実装をサポートするライブラリがそろっています。
2016年のプログラミング言語別の年収ランキングでは、Pythonが651万円で1位になったのをごぞんじですか?その一因には、PythonがAI技術を実装するために採用されており、なおかつ高単価であることが考えられます。すでにフリーランス向けのPython案件にもAI技術を取り入れたものが出てきています。フリーランスとしてはこれを逃す手はないでしょう。
この記事では、人工知能技術を学んでみたいPython使いのフリーランスの方のために、人工知能技術の分野のひとつである「機械学習」について解説していきます。数学的な難しい話はせずにわかりやすく解説します。ぜひご一読して、AI技術を学ぶための手がかりにしてください。
人工知能(AI)とは?
人工知能(AI)とは、コンピューターなどを利用して人工的に人間の知性を作り出すことを指します。AIというと、ハリウッド映画のターミネーターなどのロボットを思い浮かべる方が多いと思いますが、現在のAIの大部分はコンピューター上で動作するプログラムにすぎません。
一口にAIといってもさまざまな分野が存在しています。最近では、コンピューターチェスや将棋が話題になっていますね。チェスではもはや人間ではAIに勝つことはできないといわれていますし、将棋でもプロを打ち負かすほどの実力を持っています。今回紹介する「機械学習」もAIの分野のひとつです。
巷で話題のAI技術分野「機械学習」
機械学習(マシーンラーニング)はAIの分野のひとつで、「人間が生まれ持った学習能力」をコンピューター上で人工的に作り出そうというものです。人間は成長の過程で、自然にものの区別が付けられるようになります。ネコを見ればネコだとわかり、イヌを見ればイヌだと分かるといった具合です。人間にとっては当たり前のことですが、コンピューターにとっては非常に難しい問題でした。結局のところAIはプログラム(アルゴリズム)にすぎないため、ネコを判別するためのプログラムを書くだけでも膨大な判定条件がいります。ましてや判別したいものはネコだけに限りません。一般的なプログラミング技術では不可能といってもいいでしょう。
しかし、機械学習ならそれが可能になります。機械学習では、人間が判別するためのプログラムを開発することはありません。AIが自分で特徴を見つけて判別するのです。つまり、こういう特徴があればネコだ、こうならイヌだという具合です。それには、大量のデータ(ビッグデータ)が必要です。大量に入力されたデータをAIが学習することで特徴を見つけ、未知のデータが与えられた時に、学習した特徴を元にそれがなんであるか判別します。
以上が機械学習の概要です。それでは一体どのように機械学習を実現しているのでしょうか?それにはいくつかの手法があります。深層学習や強化学習、サポートベクターマシンなどです。他にもいろいろあるのですが、この記事では上記の3つについて解説していきます。それでは、深層学習からみていきましょう。
深層学習と呼ばれる手法
人間の脳内では、ニューロン(神経細胞)がネットワークを作ることで情報を伝達し合っています。深層学習(ディープラーニング)は、このニューロンのネットワーク(ニューラルネット)をモデルに考えられた手法です。簡単に言うと、プログラムしたニューラルネットワーク(NN)に、画像などの大量のデータを入力することでNNを学習させます。それから未知のデータを入力すれば、学習したNNがどのデータに最も近いか判別します。
Googleはこの手法を用いて、AIに「ネコの概念(特徴)」を学習させることに成功しています。つまり、AIはネコというものがどういうものか”理解した”のです。Googleの力を持ってしてもやっとネコを学習させた程度ですが、これはAIにとって大きな進歩でしょう。
行動決定の強化学習
強化学習は、「ある行動」から「どれだけの報酬(スコア)」を得られたか学習することで、現在の状態で取るべき行動を決定する手法です。人間もうまくいかなかった行動(スコアが低い行動)を学習して、次は別の行動をとってよりよい成果(スコア)を出そうとしますよね?それと同じような考え方です。
”スコア”という概念がゲームにマッチするためか、強化学習を用いて市販のゲームをAIがプレイするという試みが数多くあります。一番有名なのが、Googleが買収したDQN(Deep Q Network)です。学習したAIは、プロ顔負けのプレイで「スペースインベーダー」や「ブロック崩し」などのゲームでハイスコアを叩き出しています。人間が一切ルールを教えなくても自動的に学習してどんどんスコアを上げていくのです。いずれゲームのAIに人間が勝てなくなってしまう日も来るかもしれませんね。
汎用性の高いサポートベクターマシン
サポートベクターマシン(SVM)は、2種類のデータを分類するための手法です。たとえば、ある画像がネコなのかイヌなのか判別するといったことです。SVMを構成するためには、まずは教師となる学習データが必要です。先の例で言いますと、ネコとイヌの画像が複数枚必要になります。その画像の特徴(色や形など)を数値化すると、ある一定の傾向が現れます。つまり、数値化された特徴からネコかイヌか判別できる数学関数が作れるのです。うまく特徴を数値化できていれば、少ない学習データからでも高い判別性能が期待できます。汎用性が高く、土砂災害の危険度予測や花の品種識別などさまざまなことに利用されています。
Pythonで使える機械学習ライブラリ3選
最後に、Pythonで機械学習を行うためのライブラリを紹介します。自分で一から作るのは難しいので、ライブラリの力を借りましょう。もちろん自力で実装するのもアリです。数学に自信がある方は自分で作ってみるととてもよい学習になります。
scikit-learn
オープンソースの機械学習ライブラリ。サポートベクターマシン、ランダムフォレスト、Gradient Boosting、k近傍法、DBSCANなど多数の手法が使えます。歴史の長い定番ライブラリです。
Theano
深層学習を実装するためのライブラリ。数値計算ライブラリとなっており、数学的理論を理解した上級者向けです。現在も開発が続けられています。
TensorFlow
Googleが開発したことで有名な機械学習ライブラリ。実際にGoogleのサービスで画像検索や音声検索のために使われています。ウェブ上の情報が多いので、初心者の方にはこちらがおすすめです。
まとめ
人工知能技術に興味がわきましたか?AI技術は数学的な理論で成り立っており、理解するのは簡単とはいえません。とはいえ、これからも成長を続ける分野ですし、2045年には人工知能が人類の知能を超えるとまで言われています(いわゆる2045年問題)。将来性は十分ですから、AIライブラリを活用して少しずつでもはじめてみましょう。
実はAI技術が流行るのは3度目で、今までは研究がうまくいかずに失敗に終わっていました。しかし、3度目の正直といわれるように今回は本当に成功するのではないでしょうか。これから自動運転など多数の分野で活用が進んでいきます。あなたも人工知能を作ってみませんか?
実際のフリーランスの案件を見てみよう
最近では「クラウドワークス テック」などのフリーランス専門のエージェントサービスもありますので、まずは実際に募集のあるお仕事の事例をチェックしてみると良いでしょう。
登録をすると、Web上では非公開の案件もご紹介を受けることができます。まずは色々なエージェントサービスへ無料登録するところからスタートしてみましょう。
フリーランスになるために必要な知識やスキルアップの方法等、様々なお役立ち情報を発信していきます。
(リモートワーク案件に強いフリーランスエージェント「クラウドワークス テック」を運営)