Posts

Showing posts from February, 2018

Octave - Matlab Tutorials

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく まとめてます。 正確には公式サイトを参照して下さい。 [MachineLearning Week2](https://www.coursera.org/learn/machine-learning/home/week/2) # Octave - Matlab Tutorials ## Basic Operations Octaveの基本的な操作をまとめます。 コメントを書くときは % で始めます。 - 1 ~= 2: % !=のことで、等しくないことをチェック - a = pi % πを代入 - disp( sprintf( '2 decimals: %0.2f', a)) % テキストのフォーマット出力 - format long % 以降、結果を長く表示 - format short % 以降、結果を短く表示。 * A = [ 1 2; 3 4; 5 6] % 配列を定義 - v = 1: 0.1: 2 % 1 から 2まで 0.1ステップで加算 * ones( 2, 3) % 2行3列 のすべてが 1の配列を作成 * 2*ones( 2, 3) % 上記行列を倍に * w = zeros( 1,3) % 1行3列の、すべて0の行列を作成 * w = rand( 1, 3) % 乱数配列 * w = randn( 1, 3) % Gaussian乱数配列 - w = -6 + sqrt( 10)*(randn(1,10000)); % 10000個 - hist(w) % ヒストグラム表示 - hist(w,60) % ヒストグラム表示(詳細) + eye(4) % 単位行列 - help eye % ヘルプ表示 ## Moving Data Around 使用頻度の高い処理をまとめます。 - A = [ 1 2; 3 4; 5 6] - size(A) % 行列の大きさ - size(A,1) % 最初の次元の大きさ - length(v) % 最長の長さ + pwd % 作業ディレクトリ + cd % ディレクトリの変更 + load ...

Octave - Matlab Tutorials

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく まとめてます。 正確には公式サイトを参照して下さい。 [MachineLearning Week2](https://www.coursera.org/learn/machine-learning/home/week/2) # Octave - Matlab Tutorials ## Basic Operations Octaveの基本的な操作をまとめます。 コメントを書くときは % で始めます。 - 1 ~= 2: % !=のことで、等しくないことをチェック - a = pi % πを代入 - disp( sprintf( '2 decimals: %0.2f', a)) % テキストのフォーマット出力 - format long % 以降、結果を長く表示 - format short % 以降、結果を短く表示。 * A = [ 1 2; 3 4; 5 6] % 配列を定義 - v = 1: 0.1: 2 % 1 から 2まで 0.1ステップで加算 * ones( 2, 3) % 2行3列 のすべてが 1の配列を作成 * 2*ones( 2, 3) % 上記行列を倍に * w = zeros( 1,3) % 1行3列の、すべて0の行列を作成 * w = rand( 1, 3) % 乱数配列 * w = randn( 1, 3) % Gaussian乱数配列 - w = -6 + sqrt( 10)*(randn(1,10000)); % 10000個 - hist(w) % ヒストグラム表示 - hist(w,60) % ヒストグラム表示(詳細) + eye(4) % 単位行列 - help eye % ヘルプ表示 ## Moving Data Around 使用頻度の高い処理をまとめます。 - A = [ 1 2; 3 4; 5 6] - size(A) % 行列の大きさ - size(A,1) % 最初の次元の大きさ - length(v) % 最長の長さ + pwd % 作業ディレクトリ + cd % ディレクトリの変更 + load ...

Normal Equation Noninvertibility

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく まとめてます。 正確には公式サイトを参照して下さい。 [MachineLearning Week2](https://www.coursera.org/learn/machine-learning/home/week/2) ## Normal Equation Noninvertibility ここでは正規方程式と、逆行列を持たない行列についての話。 専門的すぎるため、数学的な証明はしませんが、 正規方程式でパラメータを求める時、 めったに起こらないとは思いますが、 逆行列が求められないと、 解を求められなくなってしまいます。 Optaveには擬似的に逆行列を求める関数が用意されていて、 具体的にはこのように記述して、解を求めます。 pinv( x' * x) * x' * y

正規方程式の考え方

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく まとめてます。 正確には公式サイトを参照して下さい。 [MachineLearning Week2](https://www.coursera.org/learn/machine-learning/home/week/2) # 正規方程式の考え方 機械学習における正規方程式(normal equation)とは以下のようなものです。 $$\theta = (X^T X)^{-1} X^{T} y$$ 機械学習では、 仮説が以下のように与えられた時、 $$h_{\theta}(x)=\theta^{T}x$$ 目的関数は、以下のように定義されます。 $$ J(\Theta) = \frac{1}{2m} \sum^m_{i=1}( \theta^{T}x - y)^2 $$ この目的関数を最小化するためのパラメータ$\theta$を 一気に求めるために、 正規方程式が使われます。 正規方程式の直感的な理解のため、 目的関数の二乗誤差部分に注目します。 行列$X$は入力で、 $\theta$はパラメータのベクトルとします。 二乗誤差部分 $||X\theta - y||^2$は、 $(X\theta - y)$を転置して、 もう一つの$(X\theta - y)$に掛け合わせる形で2乗すると、 以下のように書けます。 $$||X\theta - y||^2 = (X\theta - y)^T(X\theta - y)$$ 転置を展開して $$||X\theta - y||^2 = (\theta^T X^T - y^T)(X\theta - y)$$ さらにカッコを展開するとこうなります。 $$||X\theta - y||^2 = \theta^T X^T X\theta - 2 \theta^T X^T y + y^T y$$ これを微分すると最小値が求められることになります。 $\theta^T X\theta$の微分は$2X\theta$で、 $\theta^T X^T y$の微分は$X^T y$なので、 このようになります。 $$\partial(||X\theta - y||^2) = 2X^T X \theta - 2...

【重要】 Normal equation 正規方程式

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく まとめてます。 正確には公式サイトを参照して下さい。 [MachineLearning Week2](https://www.coursera.org/learn/machine-learning/home/week/2) # Computing Parameters Analytically ## 【重要】 Normal equation 正規方程式 ここまでは最小降下法、最小二乗法で 目的関数の最小値を求めていましたが、 正規方程式というものを用いると、 一発で最小点を求めることが出来るのです。 詳しい証明は他に譲るとして、 ここでは大まかな説明をします。 $J(\theta)$: Cost Function 目的関数 パラメータが複数あって、 $\theta$が ${\rm I\!R}^{n+1}$ 次元実数のベクトルで、 最適値を求める場合を考えます。 $$ J(\theta_0, \theta_1, \cdots, \theta_m) = \frac{1}{2m} \sum^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2 $$ m個のサンプル,n個の項目がある場合、 i番目のサンプルの項目は、以下のように表される $$ x^{(i)} = \begin{bmatrix} x^{(i)}_0 \\ x^{(i)}_1 \\ \vdots \\ x^{(i)}_n \end{bmatrix} \in {\rm I\!R}^{n+1} $$ 項目全体を表すX design matrixは、 各サンプルごとの特徴を転換して、 以下のように表される。 $$ X = \begin{bmatrix} -- & (x^{(1)})^T & -- \\ -- & (x^{(2)})^T & -- \\ & \vdots & \\ -- & (x^{(m)})^T & -- \end{bmatrix} $$ 各パラメータに対する偏微分を求めます。 これが正規方程式となります。 $$\theta = (X^T X)^{-1} X^{T} y$$ ...

Gradient Descent in Practice II - Learning Rate

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく まとめてます。 正確には公式サイトを参照して下さい。 [MachineLearning Week2](https://www.coursera.org/learn/machine-learning/home/week/2) ## Gradient Descent in Practice II - Learning Rate 学習率 最急降下法では、 パラメータの値を少しづつ変化させながら、 目的関数を最小化させます。 その変化量$\alpha$は、学習率と呼ばれます。 学習率$\alpha$は、 以下の条件を考慮しながら適切な値を選ぶようにします。 - 極小に向かっているか - 学習率に適切な値が指定されているか - 範囲 - 振り幅 どのように$\alpha$を選んだら良いのか、 また、$\alpha$自体を使わない方法を、 後半で説明します。

Gradient Descent in Practice I - Feature Scaling

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく まとめてます。 正確には公式サイトを参照して下さい。 [MachineLearning Week2](https://www.coursera.org/learn/machine-learning/home/week/2) ## Gradient Descent in Practice I - Feature Scaling 変数がたくさんある場合、 変化量を統一すると、 計算しやすくなります。 ### Scaling 例えば変数として、 家の部屋数や、土地面積など、 数値的に異なる数値範囲のものがある場合、 便宜的に比率に置き換えtあり、 たとえばすべてのパラメータを 0から 1の範囲で考えられるように調整すると、 計算がしやすくなります。 ### Mean normalization 数量の正規化 複数のパラメータがあるとき、 中心値からのバラつきで考えると、 パラメータの変動範囲を正規化できます。

Gradient Descent for Multiple Variables

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく まとめてます。 正確には公式サイトを参照して下さい。 [MachineLearning Week2](https://www.coursera.org/learn/machine-learning/home/week/2) ## Gradient Descent for Multiple Variables 変数が複数ある場合の最小降下法の使用方法です。 $n$個の変数を持つ場合、 - 変数 $\Theta$ : $\theta_0, \theta_1, \cdots, \theta_n$ の時、 - 仮説は: $h_\theta(x)=\theta_0 + \theta_1x_1 + \theta_2x_2 + ... + \theta_nx_n$ 目的関数は以下のようになります。 $$ J(\Theta) = \frac{1}{2m} \sum^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2 $$ 変数が1つの時と同じように、 それぞれの変数を少しずつ変えながら、 目的関数$J(\Theta)$を最小化していきます。 収束するまで繰り返す {     $\theta_j$ := $\theta_j$ - $\alpha$ $\frac{\partial}{\partial\theta_j} J(\theta)x^{(i)}_j$ }

Multiple Features (variables)

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく まとめてます。 正確には公式サイトを参照して下さい。 [MachineLearning Week2](https://www.coursera.org/learn/machine-learning/home/week/2) # Multivariate Linear Regression ## Multiple Features (variables) 評価する要素が複数の場合を学びます。 そしてベクトルを使って仮説を表現できることも学びます。 今までは たとえば、 土地の面積だけを要素として、家の値段の予想をしましたが、、 ここでは、土地の面積、間取り、築年数など、 複数の要素を考慮して、 家の値段を予測するような場合を扱います。 今までの仮説は以下のように定義しました。 $$h_\theta(x)=\theta_0 + \theta_1x$$ ここでは、要素が複数となり、仮説は以下のようになります。 $$h_\theta(x)=\theta_0 + \theta_1x_1 + \theta_2x_2 + ... + + \theta_nx_n$$ - $n$: 評価要素の数 - $x^{(i)}$ = i行目の学習データのセット - $x^{(i)}_j$= i行目の学習データ の j列の値 ### 行列を使用した仮説の記述方法 行列を使って、仮説を以下のように書くことができます。 (計算しやすくするため、$x_0=1$が追加されます) $$x = \begin{bmatrix} x_0 \\ x_1 \\ x_2 \\ ... \\ x_n\end{bmatrix} \in {\rm I\!R}^{n+1} $$ $$\theta = \begin{bmatrix} \theta_0 \\ \theta_1 \\ \theta_2 \\ ... \\ \theta_n\end{bmatrix} \in {\rm I\!R}^{n+1} $$ 行列の転置を使って、仮説は以下のように書けます。 $$h_{\theta}(x)=\theta^{T}x$$

Matrices and Vectors

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく まとめてます。 正確には公式サイトを参照して下さい。 [MachineLearning Week1](https://www.coursera.org/learn/machine-learning/home/week/1) ## Matrices and Vectors 学校で習った行列の復習です。 ### 行列 $A = {\rm I\!R^{4 \times2}}$ は、 実数の4行2列 次元の行列で、以下のように書けます。 $$ A = \begin{bmatrix} 6 & 28 \\ 496 & 8128 \\ 12 & 56 \\ 22 & 468 \end{bmatrix} $$ 1行め1列の項を表すにはこうなります。 $$ A_{11} = 6 $$ ### Vector ベクトルは、1列の行列です。 4次元 ${\rm I\!R^{4}}$ のベクトルはこうなります。 $$ y = \begin{bmatrix} 6 \\ 28 \\ 496 \\ 8128 \end{bmatrix} $$ ## Addition and Scalar Multiplication ### 行列の加算 $$ \begin{bmatrix} 1 & 0 \\ 2 & 5 \\ 3 & 1 \end{bmatrix} + \begin{bmatrix} 4 & 0.5 \\ 2 & 5 \\ 0 & 1 \end{bmatrix} = \begin{bmatrix} 5 & 0.5 \\ 4 & 10 \\ 3 & 2 \end{bmatrix} $$ ### 行列の実数の掛け算 $$ 3 \times \begin{bmatrix} 1 & 0 \\ 2 & 5 \\ 3 & 1 \end{bmatrix} = \begin{bmatrix} 3 & 0 \\ 6 & 15 \\ 9 & 3 \end{bmatrix} $$ ### 行列の実数の割...

Gradient Descent For Linear Regression

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく まとめてます。 正確には公式サイトを参照して下さい。 [MachineLearning Week1](https://www.coursera.org/learn/machine-learning/home/week/1) ## Gradient Descent For Linear Regression ここまでに説明してきた線形回帰の目的関数 $J(\theta_0, \theta_1)$ は、 パラメータ二つで、プロットすると サラダボウルやハンモックみたいな形になります。 目的関数を最小化するということは、 このハンモックの底を見つけるということになります。 仮説$h_\theta(x)$の直線関数を 与えられた学習データに対して、 最小の誤差になるように配置するということは、 目的関数 $J(\theta_0, \theta_1)$を最小化することになります。 左のグラフで、直線$h_\theta(x)$が 学習データにフィットしていくにしたがって、 ハンモックを2次元に配置した 右の$J(\theta_0, \theta_1)$のグラフで、 赤い点がだんだんと最小値に近づいていきます。 数式的に書くと下のようになります。 その証明まで分からなくても、 この式を、すなおに実行して行けば、 求める予測に到達できますので 分からなくても心配しないで下さい。 Octaveで、 目的関数さえ定義すれば、 複雑そうに見える偏微分の計算も ほんの数行で書くことができます。 % Gradient decent algorithm X = [3; 1; 0; 4]; % 入力の定義 y = [2; 2; 1; 3]; % お手本の定義 > theta = [10;10]; % θ0, θ1の定義 > costFunctionJ( X, y, theta) % 目的関数の実行 ans = 9824.8 以下は、興味のある人だけ確認して下さい。 目的関数の偏微分は以下のように表されます。 $$ \...

Gradient Descent Intuition

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく 解説しています。 正確には公式サイトを参照して下さい。 [MachineLearning Week1](https://www.coursera.org/learn/machine-learning/home/week/1) # Gradient Descent Intuition ### Gradient decent algorithm - $θ_1 \in {\rm I\!R}$ パラメータは実数の範囲です - $\alpha$ は 学習ステップの変化量です - $\frac{\partial}{\partial \theta_j} J(\theta_0, \theta_1)$ : derivative 微分項。つまり $J(\theta_1)$の接線 例えば、 パラメータの $\theta_1$だけに注目してみると、 $J(\theta_1)$を最小化するには 接線の傾きががゼロになれば良いわけです。

Gradient decent

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく 解説しています。 正確には公式サイトを参照して下さい。 [MachineLearning Week1](https://www.coursera.org/learn/machine-learning/home/week/1) ## Gradient decent 前回までに、 目的関数を最小化することで、最適解が得られることが説明されました。 ここでは、具体的にどのように最小値を求めることが出来るかを学びます。 この図は、学習データの分布を表しています。 Gradient decent algorithm (最急降下法) と呼ばれるアルゴリズムを使って、 1. ある $\theta_0$, $\theta_1$から検索開始します。 2. 変化ステップ $\alpha$ で、 3. $\theta_0$, $\theta_1$を同時にずらしていきます。 4. $J(\theta)$が最小になったら終了です! 最小値に到達するまで繰り返します {     $\theta_j$ := $\theta_j$ - $\alpha$ $\frac{\partial}{\partial \theta_j} J(\theta_0, \theta_1)$         ($j = 0$, $j = 1$ 両方を同時に変化させる) } パラメータを変化させる時、 すべての$\theta$を同時に変化させるようにします。 ### 最急降下法では以下の点に注意 $\theta$をずらしていく変化量 $\alpha$を 適切に選ばなければならないのですが、 - $\alpha$が小さすぎると、収束に時間がかかる - $\alpha$が大きすぎると、最適値を見つけることが出来ない $\theta$の初期値がすでに局所最小に収束してしまう可能性もあります。 これらの問題の解決法は、 後々説明されます。

Cost Function - Intuition II

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく 解説しています。 正確には公式サイトを参照して下さい。 [MachineLearning Week1](https://www.coursera.org/learn/machine-learning/home/week/1) 各学習サンプルと、 パラメータが二つある目的関数$J(\theta_0, \theta_1)$の 二乗差の平均が、最小になるような $\theta_0$, $\theta_1$ を求める最小化問題は、 実際は三次元のサラダボール型の等高線図の底を求める問題になります。 ここまでをまとめると、 パラメータ$\theta_0$, $\theta_1$で定義された フィット仮説$h_{\theta}(x)$は以下のように表されて、、 $$ h_{\theta}(x) = \theta_0 + \theta_1 x$$ その目的関数は、サラダボウル上の学習データの位置関係を表し、 $$ J(\theta_0, \theta_1) = \frac{1}{2m}\sum^{m}_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2 $$ この目的関数$J(\theta_0, \theta_1)$を最小化すると、 入力データとお手本との差が最小になるので、 最適解が求められる、 ということになります。

Cost Function - Intuition I

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく 解説しています。 正確には公式サイトを参照して下さい。 [MachineLearning Week1](https://www.coursera.org/learn/machine-learning/home/week/1) ## Cost Function - Intuition I Linear Regression Modelでの目的関数は 以下のように表されます。 $$ J(\theta_0, \theta_1) = \frac{1}{2m}\sum^{m}_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2 $$ この式を記憶する必用はありません。 この通りプログラムしていけば、 機械学習を行うことができるので、 心配はいりません。 仮説関数は、以前説明したように、以下のように表されます。 $$ h_{\theta}(x) = \theta_0 + \theta_1 x$$ 各学習サンプルと、 この仮説の二乗差の平均が、 最小になるような $\theta_0$, $\theta_1$ を求めたいわけです。 そうすると 目的関数$J(\theta_0, \theta_1)$ の値が最小誤差となり、 最適値が求められるというわけです。

【最重要】 Cost Function

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく 解説しています。 正確には公式サイトを参照して下さい。 [MachineLearning Week1](https://www.coursera.org/learn/machine-learning/home/week/1) ここで学ぶことは 非常に重要で、 機械学習の**最重要項目**の一つです。 目的関数(cost function 費用関数, 英: objective function) は、 学習項目の誤差が最小になるように、 パラメータで調整した関数です。 例えばこんな感じで表されます。 詳しくは後で説明します。 $$ J(\theta_0, \theta_1) = \frac{1}{2m}\sum^{m}_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2 $$ 一見難しく見える人も、全然心配いりません。 全く記憶する必用はないし、 後々意味が分かってくるし、 後で練習するように Octaveを使えば、 数行で実装できてしまいますので。 ### 使用する記号をまとめておきます。 - $m$ = number of training examples 学習用サンプルデータの総数 - $x's$ = input variable / feature 各学習データの評価項目 - $h_{\theta}(x)$ = hypothsis 仮説。 $\theta$ によってパラメータ化された $x$ に対する 関数。 - $\theta$ (e.g. $\theta_0$ $\theta_1$) = フィットパラメータ - $y's$ = お手本 - $(x,y)$ = one training example - $(x^{(i)},y^{(i)})$ = i番目のサンプル ### 教師あり学習を数学的に言うと、 与えられた学習サンプル$(x, y)$に対して、 仮説$h_\theta(x)$が 与えられたお手本 $y$にできるだけ近づくように、 $\theta_0$, $\theta_1$ を求めること、 ということになります。 この仮説$h_\theta(x)$があれば、 与えられた値...

Model Representation

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく 解説しています。 正確には公式サイトを参照して下さい。 [MachineLearning Week1](https://www.coursera.org/learn/machine-learning/home/week/1) 機械学習は、 学習データを 学習アルゴリズムによって 仮説にフィットさせて、 評価結果を得ます。 線形モデルの パラメータ$\theta$で表される 仮説は以下のようになります。 $$ h_{\theta}(x) = \theta_0 + \theta_1*x$$

Unsupervised Learning

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく 解説しています。 正確には公式サイトを参照して下さい。 [MachineLearning Week1](https://www.coursera.org/learn/machine-learning/home/week/1) ## Unsupervised Learning - ネットで同じ事件に関するニュースを集める - DNAの配列を見て、同じ配列をグループ分けする - SNSの所属グループを解析する - 製品のマーケットの分布がどうなっているのか分析する - 天体の星のデータから法則を見つけ出す - ノイズの中から音声を区別する このように、 カオスの中から秩序を見つけるために用いるのが、 教師なし学習です。

Supervised Learning

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく 解説しています。 正確には公式サイトを参照して下さい。 [MachineLearning Week1](https://www.coursera.org/learn/machine-learning/home/week/1) ## Supervised Learning 教師あり学習は: 事前に与えられたデータを「例題」とみなして、 それをお手本に学習をして、 結果を予測するのに使われます。 たとえば以下のようなところで使えます。 - 文字のお手本が与えられ、手書き文字を認識する - 腫瘍の画像が与えられ、それが良性悪性の判断をする - 土地取引のデータが与えられ、家の価格を予測する 予想結果の種類により、 データに傾向がある場合(回帰問題)と、 グループに分ける場合(ロジスティック問題)の 2種類に分類します。 ### Regression 回帰問題 データに傾向があり、ある関数にフィット出来る時。 ### Classification 分類問題 データをグループに分けたいとき

What is Machine Learning

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく 解説しています。 正確には公式サイトを参照して下さい。 [MachineLearning Week1](https://www.coursera.org/learn/machine-learning/home/week/1) ## What is Machine Learning すでに機械学習は、いたるところで使われています。 - Google検索で、結果が得られるのも、 - スパムメールを振り分けたり、 - ルンバが部屋を掃除したり、 - iPhoneが、画像認識、顔認識、 - テスラの自動運転等、、、 人間の脳の構造を観察することで、 機械学習で使われるニュラルネットワークを 更に進化させることができます。 特に数学が得意でなくても このコースを取ることで、 機械学習を実践できます。 囲碁、将棋みたいな、やることが決まっている世界で、 疲れも知らず、延々と計算できるのが 機械学習の得意分野。 機械学習の定義の一つとして、 コンピュータ・プログラムは、 経験 E を得た時、 ある仕事 T について、 性能 P が改善すれば、 経験 E から学習した、 と言うことが出来る。 - E: Exprience 経験: - T: Task 仕事: - P: Performance 性能: 将棋の世界でいえばこうなります、 - E: 経験: 将棋を何千万局指した - T: 仕事: 将棋を指す - P: 性能: 勝つ確率 迷惑メールの分類では、 - E: 経験: ユーザがメールに対して「迷惑メール」と指定した - T: 仕事: 迷惑メールかどうかの判断 - P: 性能: 正確に迷惑メールを分類できた割合 機械学習アルゴリズムの種類としては、 以下のようなものがあります。 * 教師あり学習: 手書き入力など、お手本があるもの * 教師なし学習: トレンド分析など、結果の形が予想できないもの * 強化学習: やりたいことははっきりしてるけど、どうやればベストなのかわからない時。 ホームランバッターロボを作りたいけど、ベストのフォームが分からないとか。 * おすすめシステム: アマゾンで購入したら次の商品をおす...

Coursera - Machine Learning 講義内容概要 Syllabus

Image
Coursera の Machine Learningの内容を あまり専門用語などを使わず、 自分の理解に基づいて、 **ゆるーく** まとめます。 そのため、きっと厳密性には欠ける部分が多々あると思います。 11週のコースで、 以下のような項目が学べます。 能力に応じてどんどん自分のペースで学んでいけます。 # Week1: ## Introduction 学習する概要と、 このコースの使い方が説明されます。 具体的には、 - 機械学習とは? - どのような分野で使われているか。 - 教師あり学習: 手書き文字認識など、お手本がある学習 - 教師なし学習: SNSでのグループを分けるとか、無秩序から秩序を見つける方法 ## Linear Regression with One Variable 例えば、土地の面積と、住宅の価格との関係が、 ある関数で表せる場合、 面積から価格が予想できます。 学習予想が、ある関数の形にフィットする場合。 ひとつの入力に対して、線形回帰により 値を予測する方法が説明されます。 ここで学ぶのは、 - 仮説関数と、そのパラメータを、数式でモデル化する方法 - 目的関数: Cost Function/ Objective Function これは値を予測するための関数です。 - 最急降下法: Gradient Descent 目的関数の最小値つまり、予測値を求める方法 ## Linear Algebra Review 機械学習を効率的に行うために、 行列計算や、ベクトル計算が多用されます。 高校などで習った行列計算の復習をします。 # Week2 ## Linear Regression with Multiple Variables 前週はひとつの変数の場合が説明されましたが、 ここでは どのように線形回帰を多変数に応用したらよいのか、 多変数の場合が説明されます。 具体的には以下のようなことを学びます。 - Octave/MATLABのインストール - 多変数最急降下法 多変数関数の最小値を求める方法 - パラメータの調整や補正: スケール調整、正規方程式 Normal Equation 複数の変数のレンジを統一する方法 - 学習ステップα 仮説を求めるとき、どのくらい変数を...

Courseraとは

Image
# Courseraとは 同時期に創設された[Udacity](https://www.udacity.com/)という オンライン講座にも何度もお世話になっていますが、 この[Coursera](https://www.coursera.org/)もかなりお勧めできます。 スタンフォード大学コンピュータサイエンス教授が 2012年に設立したオンライン技術教育の会社です。 いくつもの一流大学が無料講座を解説しています。 営利企業なのですが、噂ではまだ利益が出ていないとか、、。 基本無料でハイレベルのオンライン講座を受講できます。 修了証が欲しい人は、有料で発行してもらえます。 その時は写真付きの正式のIDを提出する必用があります。 修了証発行料は、機械学習コースの場合は、9000円程度だったと思います。 修了証があると企業によっては、採用時に考慮してくれることもあるようです。 私はCourseraではまだ1つしか講座を終了していませんが、 プログラムの内容は、当然世界一流レベルの大学のクオリティーで、 サイトの構成も整って使いやすいし、 ビデオ、チャットサービス、質問投稿など 様々な機能ががあります。 講座内にある小テストも、 合格点に到達せず、もう一度受けようとすると、 次は違う問題が出たりとか、 プログラムの課題も提出できたりとか、 かなり良くできていると思います。 東京大学の講座もありますよ!! https://www.coursera.org/utokyo

Markdownで投稿する前に Visual Codeで下書き

Image
# Visual Code で Markdownを下書き Microsoftの無料のエディター [Visual Code](https://code.visualstudio.com/)で Markdownを使ってプレビューを見ながら編集してます。 Visual Codeは Linux/Ubuntu/Windows/Macに対応してます。 ものすごい勢いで、機能がどんどん追加されてくるし、 比較的動作も軽いし、 プラグインも大量にあります。 現時点でのバージョンは 1.20.0です Visual Codeであらかじめ下書きをして、 Bloggerに貼り付け、 少し調整してから投稿できます。 数式などを扱うために、 Visual Codeのプラグイン [Markdown+Math](https://marketplace.visualstudio.com/items?itemName=goessner.mdmath) を使っています。 $$ x(t+1) = f[a(t) -a\sum^{t}_{d=0} k^d g(x(t-d)) + \theta] ] $$

Blogger上で Markdownを使って投稿するため、marked.js 導入

# BloggerでMarkdownを使うために、[marked.js](https://github.com/chjj/marked) 導入中、、、 やりたいことは、 - 基本的な Markdownでの記述 - 数式や行列が表示できること - 画像が表示できること いろいろ問題有りつつ、なんとか使い物になりそうになってきたが、 少々クセがあって慣れるの時間がかかりそうです。 Blogger自体にデフォルトでサポートしてほしい!! もっと簡単な方法を知っている人は教えて下さい!! ## Script 実際に導入したスクリプトは、このページのソース解析して、 <head> 直後と、</body>直前の <script>処理を参照して下さい。 ## Markdown記述する時 Markdownを使用したい部分を以下で囲みます。 Markdownを使用 一部の数式を書く時、 上記囲んだ部分に書くと、うまく表示できないことがあります。 そのため、囲みの外に書く必用があります。 面倒くさいですが、、、 # Markdown Basics ## ヘッダー ~~~ # ヘッダー1 ## ヘッダー2 ### ヘッダー3 ~~~ # ヘッダー1 ## ヘッダー2 ### ヘッダー3 ## リンクの書き方 このように書くと ~~~ [marked.js](https://github.com/chjj/marked) ~~~ こうなります。 [marked.js](https://github.com/chjj/marked) # プログラムコードの記述 ## 6文字スペースを文頭に入れる スペースを入れないと表示が崩れてしまう。 // Code is just text indented a bit which(is_easy) to_remember(); ## 〜〜〜 code 〜〜〜 で挟む方法 文頭に1文字スペースを入れないと、行番号とかぶってしまう、、、 ~~~ // Markdown extra adds un-indented code blocks too if (this_is_more_code == true &...

Markdown on Blogger

# test1 数式は、MathJaxで記述します。 Greek $\alpha$ fraction $$ \frac{a}{b} $$ > 引用 一部の数式表記は、MarkDown処理の外に記述しないとエラーになってしまう。 Matrix $\begin{pmatrix}x\\y\end{pmatrix}$ MultiEquation $$ \begin{matrix} f & = & 2 + x + 3 \\ & = & 5 + x \end{matrix} $$ $\underset{\theta}{\mathrm{min}}$ $$ J(\theta_0, \theta_1) = \frac{1}{2m}\sum^{m}_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2 $$

Coursera の Machine Learning コースを受けてみた

Image
[Coursera](https://www.coursera.org/)は、オンラインの無料講座です。 その中の [Machine Learning](https://www.coursera.org/learn/machine-learning) (機械学習)の講座を受けてみたので、 まとめてみます。 ## どんな人向け? ### 議員でもAIを駆使する時代! 偶然、新宿区議会に、AI議員(自称)として活動されている 伊藤陽平さんと言う方がいることを知りました。 昼間は議会活動し、夜、家ではAIプログラミングをして、 過去の議案をAIに通して、実際に決定された賛否を比較したり 色々な試みを行なっているとのことです。 興味深い結果が出ているようですよ。 将棋や囲碁のような論理的な問題の最適解を解くような問題は、 もう人間の能力を超えることは証明されました。 今まで「直感」で行なっていた意思決定は、 適切なデータさえあれば、 議会の法案や、もしかしたら裁判の判決も、 人間以上の合理性で、AIが判断するのも 本当に時間の問題なのかもしれません。 ### そこで、、 これからAIが全盛となる時代になっていくだろうな、 となんとなく思っていて、 自分でもAIを使ったプログラムや、 システムに関わってみたいと思っている人、 詳しくAIの機械学習がどうなっているか、中身を見てみたい人。 Courseraの共同創設者である Andrew Ng教授自身が解説してくれる このMachine Learningコースは一見の価値があります。 このコースが公開されたのは2011年ですが、 Ng教授は もうその時点で、10数年も AIを使った銀河の解析やら、リコメンドシステムの開発など、 シリコンバレーやBaiduなどで 経験を積んでいたのだそうです。 世の中にはすごい人がいるもんです。 ## どんな前知識? ### 大学1年程度の基礎数学の知識があるといいです。 数列、正規分布、最小二乗法、行列計算、偏微分、ベクトル解析などが出てきます。 特にその証明までは求められないので、 式の意味することが分かりさえすればOKだと思います。 ### Octaveという数値解析マクロみたいな言語を使用します [Octave](https://www.gnu.o...

Google code-prettify

プログラムコードを記述する場合は、 Google code-prettify を使おうと思います。 Gradient decent algorithm X = [3; 1; 0; 4]; y = [2; 2; 1; 3]; octave> theta = [10;10]; octave> costFunctionJ(X, y, theta) ans = 9824.8

MathJax

数式は、MathJaxを使って表記しようと思います。 Greek $\alpha$ fraction $$ \frac{a}{b} $$ Matrix $\begin{pmatrix}x\\y\end{pmatrix}$ MultiEquation $$ \begin{matrix} f & = & 2 + x + 3 \\ & = & 5 + x \end{matrix} $$ $\underset{\theta}{\mathrm{min}}$ $$ J(\theta_0, \theta_1) = \frac{1}{2m}\sum^{m}_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2 $$

Equations in Blogger

最初はこの"Equations in Blogger"で、 LaTeX風数式の記述をしようと思いましたが、 MathJaxのほうが使いやすそうだったので、 そちらを使います。 Einstein's most famous equation is \$E=mc^2\$. Newton derived the equation $\\[s=ut+\sfrac{1}{2}at^2\\]$ \$\alpha\$ $\frac{1-sin(x)}{2}$ . $\\[A\\]$ $\\[A= \\]$ $ \[ A = \left( \begin{array}{ccc} a & b & c \\ d & e & f \\ g & h & i \end{array} \right) \] $ $\theta = \begin{pmatrix} \theta_0 \\ \theta_1 \\ \theta_2 \\ ... \\ \theta_n\end{pmatrix} \in {\rm I\!R}^{n+1} $