人気アプリ開発者の鶏肋さんのコラムです。世界のIT企業がAI(人工知能)技術を持つ企業を買収しています。国内でも開発現場での依頼が増えているプログラミング言語Pythonについて解説してもらいました。
Python(パイソン)は、1991年に登場したオープンソースのプログラミング言語です。Pythonは日本語で「ニシキヘビ」です。Python.orgのロゴをみるとお分かりいただけると思いますが、2匹のヘビをモチーフにしています。
Python(パイソン)がここ数年で急速に普及した理由に「AI(人工知能)と親和性が高い」という特徴があげられます。Pythonを語る前に、まずは普及の背景にある「AI(人工知能)」「 機械学習」「 ディープラーニング(深層学習)」について、ざっとご説明したいと思います。
Googleが「モバイルファーストからAI(人工知能)ファースト」を掲げたように、 世界のIT企業はAIへの傾倒を強めています。以下に挙げるように、 AIに関する企業買収の事例も近年多く目にするようになりました。
近年のAI企業買収事例
DeepMind、Dark Blue Labs、Vision Factory(2014年)、API.AI(2016年)を買収 | 関連記事 | |
自然言語解析のWit.aiを買収(2015年) | ||
Apple | VocalIQ、Perceptio(2015年)、Emotient(2016年)を買収 | 関連記事 |
インテル | Saffron(2015年)、Nervana Systems(2016年)を買収 | 関連記事 |
米ヤフー | 自然言語解析のSkyPhraseを買収(2013年) | |
セールスフォース | RelateIQ(2014年)、Tempo AI(2015年)PredictionIO、MetaMind(2016年)を買収 | 関連記事 |
サムスン | 人工知能アシスタントのVivを買収(2016年) | 関連記事 |
AIの活用例としては、 ソフトバンクのロボットPepper(ペッパー)、 GoogleのAlphaGo(囲碁)や自動運転、 IBMのワトソンが有名だと思います。絵を描いたり小説を書いたりするAIもあり、 その方向性は実に多彩です。
では何をもって「AI」と呼ぶのでしょう。実はAIの定義は、 専門家のなかでも定まっていません。(ここでは)「人間のような知能を持つ人工物」という理解でよいと思います。
「機械学習」とは、プログラム自身が学習するしくみです。身近な例では、スパムメールのフィルタに使用されています。仕組みとしては、 ある単語がどの程度迷惑メール的かという度合いを、 予めプログラムに学習させておきます。この学習結果をもとに、 本文で使われる単語からメールがスパムかどうかを予測するのです。
機械学習に使われる入力値を「特徴量」と呼びますが、スパムフィルタでは単語が特徴量です。個人情報から年収を予測するプログラムでは、 例えば「学歴」が有効な特徴量となるかもしれません。反対に、 例えば「生まれた日の曜日」は、 年収予測の有効な特徴量には恐らくならないでしょう。
このように、 特徴量の選定が機械学習の予測精度に大きく影響します。従来の機械学習では、 この特徴量の選定を人間が行うのですが、 これが最も難しい課題となっています。
「ディープラーニング(深層学習)」は、 機械学習のなかでも「ニューラルネットワーク」という手法を用います。ニューラルネットワークとは、生物の神経回路を模した計算手法です。このニューラルネットワークを複数重ねる(多層化する)ことで、 より複雑な分類が可能になりました。
ディープラーニングの最大の強みは、 前述の「特徴量の抽出」を自動的に行うことができるということです。人間が特徴を教え込まなくとも、 大量のデータさえあれば、機械が勝手に特徴抽出まで行い学習をしてしまうのです。
ディープラーニングの手法を用いた囲碁プログラムであるAlphaGoが、世界最強と言われる柯潔九段に勝ち越した(2017年5月15日時点)例からも、 ディープラーニングがいかに驚異的であるか分かっていただけるかと思います。
AIについての参考図書として以下を紹介します。少し古いですが、 とてもわかりやすいのでお勧めします。
「人工知能は人間を超えるか」(松尾 豊 著、角川EPUB選書)
AI、 機械学習、 ディープラーニングについてざっと説明しましたが、 これらの分野と結びつきが強いプログラミング言語がPythonです。
筆者の周りでのPythonの評価は、以下のようなものでした。
「Pythonは標準ライブラリが充実している」
「Pythonは科学計算が得意」
「Pythonはコードの書き方の決まりがしっかりしている」
Pythonはオープンソースのオブジェクト指向スクリプト言語です。科学計算を扱うのが得意なため、 AIの分野で多く使われます。Pythonさえ知っていれば、 人工知能のプログラミングを始めることは可能です。ほとんどの人工知能、 機械学習のフレームワークやライブラリはPythonから利用できるからです。
Pythonは学習しやすいという特徴があり、米国の大学のコンピューターサイエンスでは、 プログラミング教育にPythonを用いることが多いようです。
Pythonは前回の記事でご紹介したRuby(ルビー)同様に、生産性の高い汎用言語ですが、 Rubyと異なる点もあります。Rubyの記述が柔軟で書きやすいのに対し、 Pythonは書き方がきっちりと決まっていてやや窮屈です。しかし、 誰が書いても同じようなコードになるため、 学習しやすく読みやすいというのが特徴です。反対にRubyは書きやすいが、 読みにくくなってしまうこともあります。
Pythonを利用している例として、 ソフトバンクのロボットPepperや、 Instagram、 Dropboxなどが有名です。また、 Googleの公用言語とも言われています。
日本ではRubyを利用する会社やサービスが多いですが、 世界ではPythonがよく使われているそうです。
Pythonを学ぶ際に気をつけていただきたいのは、 「Python2」と「Python3」 が別物ということです。これから学ぶ方は、Python3を学ぶと良いと思います。
Pythonを真剣に(地道に)学習したい方はこちらがお勧めです。
Python チュートリアル (https://docs.python.jp/3/tutorial/)
「退屈なことはPythonにやらせよう 」(オライリージャパン)
6月3日 発売の技術書。プログラミング初心者を対象に、 退屈な日常業務をPythonで効率化する方法を教えてくれます。例として、 ExcelやPDF、 Wordを扱うプログラムや、 「コミック画像を見つけてダウンロードする」という項目もあります。
退屈な業務と地道な学習が嫌いな方におすすめです。原著をざっと眺めましたが、 良書だと思いました。
「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装」(オライリージャパン)
こちらもプログラミング初心者を対象にした書籍で、 まさにゼロからディープラーニングのプログラムを作成します。文章が易しくわかりやすいので、 人工知能に興味がある方は是非挑戦してみてください。
・Pythonは世界で使われており、Googleの公用語にもなっている。
・学習しやすいのが特徴
・Pythonを知っていれば、人工知能のプログラミングは可能
前回の記事はこちら 【こっそり学ぶプログラム言語】Rubyって何ですか?
文:鶏肋 /編集:M&A Online編集部