Machine Learning

wekaのインストール

Wekaはニュージーランドのワイカト大学で開発された機械学習,データマイニング用フリーソフトウェアです(関連書籍Data Mining, Fourth Edition: Practical Machine Learning Tools and Techniques ). 以下は,Wekaをインストールした際のメモです.Weka…

-Keras- GPUの設定

ディープラーニングの計算量は比較的大量になることが多いので,GPUを使用しないと非常に時間がかかることになるので,Keras を使用するにはGPU(NVDIA のグラフィクスカード GTX シリーズ)を利用することが効果的です. 以前の投稿で作成した mykras 環境…

-Keras- Keras のテスト

Keras が動作するかをテストしてみます.テストはJupyter Notebookを使って行います. テストには,keras 作者の Fchollet さんが用意してくれている exapmle で MNIST データセット*を学習するもの mnist_cnn.py **を一部変更して試します. 実行結果は以下…

機械学習入門 ボルツマン機械学習から深層学習まで の参考文献について

機械学習入門 ボルツマン機械学習から深層学習までの参考文献に挙げられていた書籍の一覧です.機械学習入門 ボルツマン機械学習から深層学習までは,非常に読みやすく,かつ機械学習の概略を掴むことのできる一冊でした. 人工知能は人間を超えるか ディー…

ベイズ推定入門 モデル選択からベイズ的最適化まで の参考文献について

ベイズ推定入門 モデル選択からベイズ的最適化までの参考文献に挙げられていた書籍の一覧です.ベイズ推定入門 モデル選択からベイズ的最適化まで自体は,非常に読みやすく,かつベイズ推定の概略を掴むことのできる一冊で,ベイズ推定についてほとんど知ら…

-Deep Learning- Softmax-with-Lossレイヤ

入力された値を正規化して出力するSoftmax関数の損失関数として交差エントロピー誤差(cross entropy error)を用いた場合のSoftmax-with-Lossレイヤの実装例を以下に示します. class SoftmaxWithLoss: def __init__(self): self.loss = None # Loss self.y…

-Deep Learning- バッチ版Affainレイヤの実装

N個のデータをまとめて順伝播する場合(バッチ-データのまとまり-版のAffineレイヤ)の具体例を以下に示します. >>> import numpy as np >>> X_dot_W = np.array([[0, 0, 0], [10, 10, 10]]) >>> B = np.array([1, 2, 3]) >>> >>> X_dot_W array([[ 0, 0, 0…

-Deep Learning- ReLUレイヤ,Sigmoidレイヤの実装

活性化関数の実装例を以下に示します. ReLUレイヤ class Relu: def __init__(self): self.mask = None def forward(self, x): self.mask = (x <= 0) out = x.copy() out[self.mask] = 0 return out def backward(self, dout): dout[self.mask] = 0 dx = dou…

-Deep Learning- レイヤの実装

ニューラルネットワークを構成するレイヤを一つのクラスで実装する例を以下に示します.レイヤは,ニューラルネットワークにおける機能の単位です. 実装,および設定については,ゼロから作るDeep Learningの5.4 単純なレイヤの実装を参考にしています. ま…

-Deep Learning- ミニバッチ学習の実装

ニューラルネットワークの学習の実装は,ミニバッチ学習で行います.ミニバッチ学習とは,トレーニングデータから無作為に一部のデータを取り出して(ミニバッチ),そのミニバッチを対象に,勾配法によりパラメータを更新します. 以下に,プログラミング例…

-Deep Learning- 学習アルゴリズムの実装

2層ニューラルネットワークの実装例を以下に示します. ニューラルネットワークのクラスをTwoLayerNetという名前のクラスで,以下のように実装します. # Import Module import numpy as np # Definition of Function def sigmoid(x): return 1 / (1 + np.ex…

-Deep Learning- ニューラルネットワークにおける勾配

ニューラルネットワークの学習においては,勾配を求める必要があります.この勾配とは,重みパラメータに関する損失関数の勾配のことです.例として,2 x 3の重みWを持つニューラルネットワークと損失関数をLで表す場合を考えます. 以下に,簡単なニューラ…

-Deep Learning- 推論を行うニューラルネットワーク

前回の投稿で読み込んだMINSTデータセットに対して推論処理を行うニューラルネットワークを実装する例を以下に示します. ネットワークは,入力層を784個,出力層を10個のニューロンで構成します.入力層の784個は,画像サイズの28 x 28 = 784からきています…

-Deep Learnin- 手書き数字認識

ニューラルネットワークの推論処理の実装例を,手書き数字画像の認識を例として以下に示します. 使用するデータセットはMINSTです. ここでは,MINIST データセットのダウンロードから画像データのNumpy配列への変換までをサポートしてくれる,書籍ゼロから…

-Deep Learning- バッチ処理

前回 までにMINSTデータセットを用いたニューラルネットワークの実装例を示しました. 今回は,まずはPythonインタプリタを使用して,ニューラルネットワークの各層の重み形状を出力してみます. >>> x, _ = get_data() >>> network = init_network() >>> W1…

-Deep Learning- 活性化関数

ステップ関数の実装例を以下に示します. まずは,ステップ関数の実装のためにまずは,Pythonインタプリタを用いての例を示します.以下の例では,x というNumPy配列を用意し,そのNumPy配列に対して不等号による演算を行なっています. >>> import numpy as…

-Deep Learning- パーセプトロンの実装

まずは,以下にANDゲートの実装例を以下に示します. # Definition of Class # AND Gate def AND(x1, x2): w1, w2, theta = 0.5, 0.5, 0.7 tmp = x1 * w1 + x2 * w2 if tmp <= theta: return 0 elif tmp > theta: return 1 # Execution part print(AND(0, 0)…

-Python- 2乗和誤差(mean squared error)と交差エントロピー誤差(cross entropy error)

損失関数*として用いられる関数にはいくつかありますが,最も有名なものは2乗和誤差(mean squared error)です.2乗和誤差は以下の数式で表されます. 深層学習では,ykはニューラルネットワークの出力,tkは教師データを表し,kは次元数を表します.上記の…

-Python- サポートベクターマシン

サポートベクターマシンの実装例を以下の示します. import numpy as np from operator import itemgetter class SVC: def fit(self, X, y, selections=None): a = np.zeros(X.shape[0]) ay = 0 ayx = np.zeros(X.shape[1]) yx = y.reshape(-1, 1)*X indices…

-Python- ロジスティック回帰

二値分類に使われるアルゴリズムであるロジスティック回帰のプログラム例を以下に示します. import numpy as np from scipy import linalg THRESHMIN = 1e-10 def sigmoid(x): return 1 / (1 + np.exp(-x)) class LogisticRegression: def __init__(self, t…

-Python- 汎化,過学習

最初に多項式回帰のアルゴリズムを示します.多項式回帰とは,入力変数 に対して出力 が の多項式関数で表されるというモデルです.簡単のために,入力が1次元と仮定し,多項式の次数が で与えられるとします. ここで,はノイズを表します.このとき線形回…

UCI Machine Learning Datasets を使った回帰

UCI Machine Learning Datasetsの中のWine quality(ワインについて測定された数値とその品質(1 - 5))*を使って測定値から品質を予測するモデルを作ってみます. # Import Module import numpy as np from scipy import linalg # Definition of Class cla…

機械学習手法のインターフェース

機械学習における各種法の処理の流れを以下に示します. 教師あり学習では,特徴量を表す行列Xと,ターゲットまたはラベルを表すベクトルyの組が訓練データとなります.機械学習アルゴリズムを実装したクラスが例えば Algorithm として与えられているとする…

-Python- 画像の分類(3)

前々回,前回の投稿で学習に使用するサンプルを増やすことが,精度向上に効いてくることがわかりました.すなわち,一人だけの手を学習用サンプルに用いていた時に比べて,他の人の手を交えて,多種多様なサンプルを用いることで汎用性が高まり,精度が向上…

-Python- 画像の分類(2)

前回の投稿で,同じ人の手形状を分類することができました.一方で,人が変わると分類性能(正答率)は極度に悪くなることがわかりました.性能としては,多くの人の手形状を分類できることが望ましいので,対象とする手(人)を増やす,すなわち,学習デー…

-Python- 画像の分類(1)

0-5本の指を立てている6種類の画像の手の形状を分類するプログラム例を以下に示します. 手の形状の分類器は以下の手順で作成します. 右手の手のひら側を撮影した画像を入力する 6種類の手形状を分類する 不特定多数の成人の手を対象とする 正答率80%を目標…

-Python- クラスタリング手法

前回の投稿で k-means によるクラスタリングを行いましたが,クラスタリング手法は大きく分けて階層的(hierarchical)と非階層的(non-hierarchical)の2つに分類できます. 階層的クラスタリンング:データを階層的に分類していく方法です.手法としてはさ…

-Python- クラスタリング k-means

クラスタリングには様々な手法がありますが,以下にk-meansを用いた例を示します.k-meansは1950年代に発表された比較的古い手法のようですが,計算が簡単であり直感的でわかりやすいというメリットがあり,現代でも使用されています. k-meansはクラスタ数…

-Python- クラスタリング Iris データセット

クラスタリングとは,データの性質からデータの塊(クラスタ)を作成する手法です.対象が2次元であれば,散布図により大まかな構造を見ることができます.一方で多次元の場合は,想像がつきにくくなります.また,データが大量であれば人手で分類すること自…

-Python- 様々な回帰モデル(4 - k-近傍法)

k-近傍法(k-nearest neighbor)はデータの近傍性に基づく手法です.未知のデータに対して最も近いk個のデータを選び出すことが基礎になります.クラス分類で使われることが多く,値の平均を使うことで回帰問題にも適用できます.なお,クラスタリング問題で…