異なるn個から、重複なくk個を選び出す
nCk = n(n-1)…(n – k + 1)/ 1*2…(k-1)*k
余事象
P(A) = 1 – P
A ∩ B かつ
A ∪ B または
機械学習の状況判断の一つとして、最も正解に至る確率が高い選択肢を正解として選ぶ
P(A ∩ B) = P(A,B) = P(A)P(B)
P(A|B) = P(A ∩ B)/P(B) Bが起きた時に、AまたはBの時
随机应变 ABCD: Always Be Coding and … : хороший
異なるn個から、重複なくk個を選び出す
nCk = n(n-1)…(n – k + 1)/ 1*2…(k-1)*k
余事象
P(A) = 1 – P
A ∩ B かつ
A ∪ B または
機械学習の状況判断の一つとして、最も正解に至る確率が高い選択肢を正解として選ぶ
P(A ∩ B) = P(A,B) = P(A)P(B)
P(A|B) = P(A ∩ B)/P(B) Bが起きた時に、AまたはBの時
(-1,2)(3 2) = 1
-1 2 , 3 = 1
1 2 , 2 5
-1 2 , 3 = 1
1 2 , 2 5
3 0 9
m * n型の行列の積はm次元列ベクトルで表される
行列の積はベクトルの内積の概念を拡張したもの
スカラー倍はベクトルだけでなく、行列にもある
行列には割り算はないが、逆行列という概念がある
行列式は det A もしくは |A|と表される
det A = ad – bc
ニューラルネットワークはパラメータと重みの掛け算を足し合わせる。これはベクトルの線形変換。
入力ベクトルx 重みW 出力ベクトルy
線形変換しても元ベクトルと向きが変わらないベクトルを固有ベクトルという
対応する成分同士を掛け算してそれらの和を取る
ベクトルとベクトルの内積はスカラーになる
内積の記号はが多い
直行条件とは、なす数が90°(cos90°=0)
法線ベクトル:全ての接線と直交するベクトル
データを複数個収めることができるように、要素を1列に並べたものをベクトルと呼ぶ
単語をベクトル化するWord2Vecという概念がある
Word2Vecは、単語一つ一つを1列に並べたベクトルに変換
ベクトルに変換すると、足し算、引き算を行うことができる
同じような意味の単語群から、同じような周辺語を予測している??
ベクトルは有向線分で視覚化できる。スカラー倍も考えうる。
ベクトルの足し算、引き算は矢印で考える
x^r: rx^r-1
e^x : e^x
a^x : a^x log[e]a
log[e]x : 1/x
sinx : cos x
cos x : -sing x
tan x : 1/cos^2x
sinx → cos x -> -sin x -> -cos x
合成関数の微分
y = f(x), dy/dx = dy/du * du/dx
合成関数(多変数) z = f(x, y)の微分法
(3x – 4)^50 を微分すると、50(3x – 4)^49 * 3 = 150(3x – 4)^49
(3x + 1)^2 + (x + y + 1)^3
2(3x + 1)* 3 + 3(x + y + 1)^2
xe^x -> 1e^x + x*e^x
正解データとニューラルネットワークの出力が合うように、ニューラルネットワークの重み(w)を調整
ニューラルネットワークの重みの調整量は誤差の値を重みで偏微分した値を考慮したもの
チェーンルールを使う
シグモイド関数
Sa(x) = 1 / 1 + exp(-ax)
dSa(x)/dx = a*exp(-ax) / {1 + exp(-ax)}^2 = aSa(x){1 – Sa(x)}
これ(aSa(x){1 – Sa(x)})をさらにxで微分する
ReLU関数
max(0, x) = {x(x > 0), 0(x <= 0)
= 1(x > 0), 0(x < 0)
標準シグモイド関数は微分すると、最大値が0.25 ニューラルネットワークの層が不快と、誤差が伝播しなくなる。その解決値としてReLU関数が多く使用されている
=> これあれだな、基礎数学もプログラミングみたいに、基礎本を10冊くらいやらんとあかんな。。
最小2乗法とは、誤差の2乗和が最小になるような関係式を求める
線形回帰と呼ばれる基本的な機械学習アルゴリズム
→ つまり微分した際の「極値」ってことか。。
微分とは、滑らかなグラフの一瞬の変化の割合を示す
極限(lim)とは一定の値に極限まで近づけること
f(x) = (x^2 – 1)/(x – a)
xの値をある一定値αに限りなく近づけると、関数f(x)が一定値αに限りなく近く 収束という
limx-1 (x^2 – 1)/(x – 1) = limx→1 (x + 1) = 2
速度 v = limΔt→0 Δx / Δt = limΔt→0 x(t- Δt) – x(t)/ Δt
Δの代わりにdを用いる
dx(x)/dt
df(x)/dx = limΔx→0 df(x)/dx = limh→0 f(x + h) – fx(x)/h
人工知能では、どの地点で最小値を取るのか調べることが多い
変数が1つのみ 常微分
変数が2つ以上 yを定数(Δy = 0)としてxを変化させる Δx → 0
→ 偏微分
f(x) = ax^2 + bx + c
→微分すると 2ax + b
f(x,y) = 3x^2 + 5xy + 3y^3
xで偏微分すると 6x + 5y
yで偏微分すると 5x + 9y^2
速度v = dx/dtは位置xを時刻tで微分したもの
加速度α=dv/dtは速度vを時刻tで微分
極大値、極小値は微分値の正負が入れ替わる点
2階微分で加速度を把握する
an = a + (n – 1)d
等差数列の和
S = 1/2n(a + l)
等比数列
an = ar^(n-1)
等比数列和
Sn = a(1-r^n)/(1-r) = a(r^n – 1)/(r – 1)
Σ(シグマ)… 総和
π(パイ)… 総乗
数列の和
nΣk=1[k] = 1/2n(n+1)
nΣk=1[k]^2 = 1/6n(n+1)(2n+1)
nΣk=1[k]^3 = {1/2n(n+1)}^2
nΣk=1 = nc
nΣk=1(ak + bk) = nΣk=1ak + nΣk=1bk
二次元
√(a1 – b1)^2 + (a2 – b2)^2
三次元
√(a1 – b1)^2 + (a2 – b2)^2 + (a3 – b3)^2
ユークリッド距離は||A||もしくは||A-B||と表せる
K-NNでも使われる
正解ラベルとのユークリッド距離で判別する
function distance($data1, $data2){
$num = 0;
for($i = 0; $i < sizeof($data1); $i++){
$num += pow($data1[$i] - $data2[$i], 2);
}
return sqrt($num);
}
var_dump(distance(array(1, 1), array(4, 5)));
[/php]
float(5)
うん、これは簡単