はじめての機械学習1 ディープラーニングのためのPython入門

こちらの記事はDeep Learningの書籍の中でも人気の書籍である、「ゼロから作る Deep Learning – Pythonで学ぶディープラーニングの理論と実装」の書評かつ、そこから学んでいく過程を、Pythonとはどういうものなのか、ディープラーニングの実装について、これから機械学習・ディープラーニングを勉強していくという方に向けていくつかに分けてご紹介していきます。

実際こちらを書いている筆者も書籍を読んではじめて機械学習を進めていきますので、興味があったけどチャレンジできなかったという方は、ぜひ一緒に取り組んでいただければと思います。

参考書籍

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ディープラーニングにPythonを使う意味

いきなりPythonを使うと言われても初心者の場合プログラミング言語が多すぎる、そのプログラミング言語がどのような働きをするのかわからないという方も多いのではないでしょうか。ここではPythonを使う意味について少しまとめておきます。

・Pythonはシンプルで読みやすく比較的覚えやすいプログラミング言語
・無料で自由に利用可能
・プログラミングがはじめてという方、大学や専門月っこうの授業でも利用される
・可読性の高いコードが書くことができる
・パフォーマンスが高い(処理速度が速い)
・Google、Facebookなどでも利用されている
・ディープラーニングの多くのフレームワークでも利用されている

Pythonのインストール

ご紹介した書籍では、下記のようなプログラミング言語とライブラリを利用します。極力ライブラリを利用しないでコードを書いていく書籍ということでかなり信頼できます。

・Python 3系
・NumPy
・Matplotilib

余談ですが、こちらの書籍が優れているポイント。
多くの書籍では、作ることに主眼を置いていて、ライブラリを多用した結果中身が分からないまま、何を使っているのか本質を理解しないままで終わることもしばしばあります。そのようなことにならないためにこちらの書籍ではなるべくライブラリを使わずに書いていく構成になっています。

Pythonをインストールするには下記のサイトにアクセスしてください。
3系のインストールをしておくことをおすすめします。

Pythonのインストールが完了して、Anacondaのインストールも完了していると下記のように返ってきます。
こちらはターミナルかコマンドプロンプトから実行します。

$ python
Python 3.5.2 |Anaconda 4.2.0 (x86_64)| (default, Jul  2 2016, 17:52:12)
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

Pythonインタプリタは「対話モード」と呼ばれており、入力すると対話的にプログラミングをすることができます。

算術計算

// 算術計算
>>> 1+2
3
>>> 2*3
6

データ型

データの型について下記のように調べることができます。データ型とはデータの性質・どのようなものかを示すものです。

>>> type(10)
<class 'int'> // 整数
>>> type(2.1298)
<class 'float'> // 小数
>>> type("hello")
<class 'str'> // 文字列

Pythonのファイル実行

Pythonファイル.pyを作成して、簡単な処理を記述します。そのファイルをターミナルから実行してみます。
こちらのファイルの実行は、ターミナルで該当ファイルが置かれている階層で実行してください。

// ファイルがなかったり、ファイル名が間違っていたり、
// スクリプトに何か間違いがあると起きるエラー
>>> python hello.py
  File "", line 1
    python hello.py
               ^
SyntaxError: invalid syntax
hello.py pythonファイル
print("I'm hungry!")

// ターミナルに下記のように打ち、成功すると
$ python hello.py
I'm hungry!

NumPyの導入

NumPyは配列クラスを多く持ち、便利なメソッドが用意されています。ディープラーニングの実装をする際にNumPyを利用します。NumPyは外部ライブラリなので、読み込みが必要になります。

$ python
Python 3.5.2 |Anaconda 4.2.0 (x86_64)| (default, Jul  2 2016, 17:52:12)
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np // numpyをnpとして読み込む
>>> x = np.array([1.0,2.0,3.0])
>>> y = np.array([2.0, 4.0, 6.0])
>>> x+y
array([ 3.,  6.,  9.])
>>> x-y
array([-1., -2., -3.])

配列の算術計算を試してみていますが、ここで大切なのは各配列の要素数を同じにしておくことです。要素数が異なるとエラー担ってしまいます。

また、NumPy配列と単一の数値(スカラ値)の組み合わせで計算することも可能です。
NumPy配列の各要素とスカラ値でここに計算されます。(ブロードキャスト)

>>> x / 2.0
array([ 0.5,  1. ,  1.5])

NumPyのN次元配列

>>> A = np.array([[1,2], [3,4]])
>>> print(A)
[[1 2]
 [3 4]]
>>> A.shape
(2, 2)
>>> A.dtype
dtype('int64')

行列の算術計算

配列の場合と同様に行列の算術計算も同じ要素数の行列同士であれば、要素ごとに計算されます。

>>> B = np.array([[3,0], [0,6]])
>>> A+B
array([[ 4,  2],
       [ 3, 10]])
>>> A*B
array([[ 3,  0],
       [ 0, 24]])

Numpyの配列:N次元配列を作成することが可能。1次元配列はベクトル、2次元配列は行列とオブ。3次元以上の配列をテンソルまたは、多次元配列と呼ぶ。

for文で各要素にアクセス

上記で作った Aという行列にアクセスした場合。非常にシンプルでわかりやすいですよね。

>>> for row in A:
...     print(row)
...
[1 2]
[3 4]

NumPyはインデックス操作だけでなく、各要素にアクセスすることも可能。

>>> A = A.flatten() // Aを一次元配列に変換
>>> print(A)
[1 2 3 4]

Matplotlibでデータの可視化

グラフの描画やデータの可視化のためにMatplotlibを利用します。Matplotlibはグラフ描画のためのライブラリです。Matplotlibで簡単にグラフを描画してみます。

// データの作成
>>> x = np.arange(0, 6, 0.1) #0から6まで0.1刻みで生成
>>> y = np.sin(x)
>>> plt.plot(x,y)
[]
// グラフの描画
>>> plt.show()

macの場合は下記の画像のようなグラフが開きます。
JavaScriptなどと異なり、コードを書いてブラウザで確認しなくても済むのは非常に便利ですよね。
グラフ

pyplot

sin関数以外にもcos関数があります。こちらを利用してsin関数とcos関数を利用して、pyplotをさらに利用してみます。

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> x = np.arange(0,6,0.1)
>>> y1 = np.sin(x)
>>> y2 = np.cos(x)
>>> plt.plot(x,y1, label="sin")
[]
>>> plt.plot(x, y2, linestyle="--", label="cos")
[]
>>> plt.xlabel("x")

>>> plt.ylabel("y")

>>> plt.title('sin & cos')

>>> plt.legend()

>>> plt.show()

python

画像の表示

pyplotは、画像表示のためのメソッドであるimshow()が用意されています。
画像の読み込みはmatplotlib.imageモジュールのimread()を利用することで実現できます。

>>> import matplotlib.pyplot as plt
>>> from matplotlib.image import imread
// 適宜画像のファイルパスは変更してください。
>>> img = imread('lena.jpg') 
>>> plt.imshow(img)

>>> plt.show()

python

「ゼロから作る Deep Learning – Pythonで学ぶディープラーニングの理論と実装」にならってPythonの導入と最低限のライブラリ導入のところまでをご紹介しました。ここからディープラーニングについてさらに学んでいきたいと思います。

Pythonをインストールしてのまとめ

・Pythonはシンプルで覚えやすいプログラミング言語
・Phtonの実行モードにはインタプリタ、スクリプトファイルの2つのモードがある
・Pythonでは他の言語と同様に関数やクラスを作成できる
・NumPyには多次元配列を操作するメソッドが多数用意されている

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

機械学習のカリキュラムがあるプログラミング学習スクールはCodeCamp

[amazonjs asin=”4873117585″ locale=”JP” title=”ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装”]

オンラインでPythonを学習する方法

書籍でPythonを学習する方法はありますが、ブラウザでPythonを学習するサービスがあります。PyQ(パイキュー)は、Python経験豊富なエンジニアがカリキュラムを作成しており、代表も20年以上プログラマーをしているという安心感のあるサービスです。