【こっそり学ぶプログラミング言語】Python(パイソン)って何ですか?

alt

人気アプリ開発者の鶏肋さんのコラムです。世界のIT企業がAI(人工知能)技術を持つ企業を買収しています。国内でも開発現場での依頼が増えているプログラミング言語Pythonについて解説してもらいました。

AI(人工知能)と親和性が高いプログラミング言語Python(パイソン)

##Pythonが普及した背景

Python(パイソン)は、1991年に登場したオープンソースのプログラミング言語です。Pythonは日本語で「ニシキヘビ」です。Python.orgのロゴをみるとお分かりいただけると思いますが、2匹のヘビをモチーフにしています。

ロゴ

Python(パイソン)がここ数年で急速に普及した理由に「AI(人工知能)と親和性が高い」という特徴があげられます。Pythonを語る前に、まずは普及の背景にある「AI(人工知能)」「 機械学習」「 ディープラーニング(深層学習)」について、ざっとご説明したいと思います。

##世界のIT企業がAIに傾倒か

Googleが「モバイルファーストからAI(人工知能)ファースト」を掲げたように、 世界のIT企業はAIへの傾倒を強めています。以下に挙げるように、 AIに関する企業買収の事例も近年多く目にするようになりました。

近年のAI企業買収事例

Google DeepMind、Dark Blue Labs、Vision Factory(2014年)、API.AI(2016年)を買収 関連記事
Facebook 自然言語解析の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と機械学習とディープラーニング

### AIとは?

AIの活用例としては、 ソフトバンクのロボットPepper(ペッパー)、 GoogleのAlphaGo(囲碁)や自動運転、 IBMのワトソンが有名だと思います。絵を描いたり小説を書いたりするAIもあり、 その方向性は実に多彩です。

では何をもって「AI」と呼ぶのでしょう。実はAIの定義は、 専門家のなかでも定まっていません。(ここでは)「人間のような知能を持つ人工物」という理解でよいと思います。

### 機械学習は情報量の選定が難しい

「機械学習」とは、プログラム自身が学習するしくみです。身近な例では、スパムメールのフィルタに使用されています。仕組みとしては、 ある単語がどの程度迷惑メール的かという度合いを、 予めプログラムに学習させておきます。この学習結果をもとに、 本文で使われる単語からメールがスパムかどうかを予測するのです。

機械学習に使われる入力値を「特徴量」と呼びますが、スパムフィルタでは単語が特徴量です。個人情報から年収を予測するプログラムでは、 例えば「学歴」が有効な特徴量となるかもしれません。反対に、 例えば「生まれた日の曜日」は、 年収予測の有効な特徴量には恐らくならないでしょう。

このように、 特徴量の選定が機械学習の予測精度に大きく影響します。従来の機械学習では、 この特徴量の選定を人間が行うのですが、 これが最も難しい課題となっています。

### ディープラーニングは特徴量の抽出を自動的に行う

「ディープラーニング(深層学習)」は、 機械学習のなかでも「ニューラルネットワーク」という手法を用います。ニューラルネットワークとは、生物の神経回路を模した計算手法です。このニューラルネットワークを複数重ねる(多層化する)ことで、 より複雑な分類が可能になりました。

ディープラーニングの最大の強みは、 前述の「特徴量の抽出」を自動的に行うことができるということです。人間が特徴を教え込まなくとも、 大量のデータさえあれば、機械が勝手に特徴抽出まで行い学習をしてしまうのです。

ディープラーニングの手法を用いた囲碁プログラムであるAlphaGoが、世界最強と言われる柯潔九段に勝ち越した(2017年5月15日時点)例からも、 ディープラーニングがいかに驚異的であるか分かっていただけるかと思います。

AIについての参考図書として以下を紹介します。少し古いですが、 とてもわかりやすいのでお勧めします。

「人工知能は人間を超えるか」(松尾 豊 著、角川EPUB選書)

人工知能は人間を超えるか
amazon(外部リンク)

## Pythonって何ですか?

### Pythonが優れている点は

AI、 機械学習、 ディープラーニングについてざっと説明しましたが、 これらの分野と結びつきが強いプログラミング言語がPythonです。

筆者の周りでのPythonの評価は、以下のようなものでした。

「Pythonは標準ライブラリが充実している」
「Pythonは科学計算が得意」
「Pythonはコードの書き方の決まりがしっかりしている」

Pythonはオープンソースのオブジェクト指向スクリプト言語です。科学計算を扱うのが得意なため、 AIの分野で多く使われます。Pythonさえ知っていれば、 人工知能のプログラミングを始めることは可能です。ほとんどの人工知能、 機械学習のフレームワークやライブラリはPythonから利用できるからです。

Pythonは学習しやすいという特徴があり、米国の大学のコンピューターサイエンスでは、 プログラミング教育にPythonを用いることが多いようです。

Pythonは前回の記事でご紹介したRuby(ルビー)同様に、生産性の高い汎用言語ですが、 Rubyと異なる点もあります。Rubyの記述が柔軟で書きやすいのに対し、 Pythonは書き方がきっちりと決まっていてやや窮屈です。しかし、 誰が書いても同じようなコードになるため、 学習しやすく読みやすいというのが特徴です。反対にRubyは書きやすいが、 読みにくくなってしまうこともあります。

### Googleの公用語であるPython

Pythonを利用している例として、 ソフトバンクのロボットPepperや、 Instagram、 Dropboxなどが有名です。また、 Googleの公用言語とも言われています。

日本ではRubyを利用する会社やサービスが多いですが、 世界ではPythonがよく使われているそうです。

### Pythonを学ぶには

Pythonを学ぶ際に気をつけていただきたいのは、 「Python2」と「Python3」 が別物ということです。これから学ぶ方は、Python3を学ぶと良いと思います。

・オンライン学習(Web)

Pythonを真剣に(地道に)学習したい方はこちらがお勧めです。

Python チュートリアル (https://docs.python.jp/3/tutorial/)

・本で学ぶ(おすすめ参考書籍)

「退屈なことはPythonにやらせよう 」(オライリージャパン)

6月3日 発売の技術書。プログラミング初心者を対象に、 退屈な日常業務をPythonで効率化する方法を教えてくれます。例として、 ExcelやPDF、 Wordを扱うプログラムや、 「コミック画像を見つけてダウンロードする」という項目もあります。

退屈な業務と地道な学習が嫌いな方におすすめです。原著をざっと眺めましたが、 良書だと思いました。

退屈なことはPythonにやらせよう
amazon(外部リンク)

「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装」(オライリージャパン)

こちらもプログラミング初心者を対象にした書籍で、 まさにゼロからディープラーニングのプログラムを作成します。文章が易しくわかりやすいので、 人工知能に興味がある方は是非挑戦してみてください。

ゼロから作る Deep Learning
amazon(外部リンク

##まとめ

・Pythonは世界で使われており、Googleの公用語にもなっている。
・学習しやすいのが特徴
・Pythonを知っていれば、人工知能のプログラミングは可能

前回の記事はこちら 【こっそり学ぶプログラム言語】Rubyって何ですか?

文:鶏肋 /編集:M&A Online編集部