シグモイド関数

Sa(x) = 1 / (1 + e^-ax) = (tanh(ax/2) + 1 )/ 2
生物の神経細胞が持つ性質をモデル化
aはゲイン
狭義のシグモイド関数は
S1(x) = 1 / (1 + e^-x) = (tanh(x/2) + 1 )/ 2

y= 0, y = 1
limx→∞Sa(x) = 1
limx→-∞Sa(x) = 0
x=0
Sa(0) = 1/2

個体群増加や閾値以上で起きる反応
ゲイン(a)が大きいほどカーブが急激になる

入力した値を0から1の間に収める
シグモイド関数は微分ができる
シグモイド関数の微分と正規分布関数はにており、計算がしやすい
ロジスティック回帰はシグモイド関数と同じ形

ニューラルネットワークは学習する際に微分を含む計算を行う ステップ関数は微分するとゼロになる シグモイド関数は微分してもゼロにならない

自然対数「e」

e は2.718…を表す定数
log[e]のことをln、 e^xのことをexp x またはexp(x)と表現することがある
eはネイピア数という

e = lim[n→∞](1 + 1/n)^n = 2.718281
e = lim[n→∞](1 – 1/n)^n = 1/e = 0.367879….

(e^x)’ = e^x
微分しても全く変わらない

e = 1/0! + 1/1! + 1/2! + 1/3! + 1/4! …
ちなみに1/0!=1, 1/1!=1 のため、2.718281…となるのだそう

e^x = 1/0! + 1/1!*x + 1/2!*x^2 + 1/3!*x^3 + 1/4!*x^4 …

自然対数 log[e]

[pyhon]
import numpy as np
import matplotlib.pyplot as plt

def get_base():
return 2

def exp_func(x):
b = get_base()
return np.power(b, x)

def numerical_diff(f, x)
h = 1e-2
return (f(x + h) – f(x -h)) / (2 * h)

def main():
x_values = np.arange(-1, 1, 0.1)
exp_values = exp_func(x_values)
diff_values = numerical_diff(exp_func, x_values)

plt.plot(x_values, exp_values, “-“)
plt.plot(x_values, diff_values, “-“, color=”red”)
plt.grid()
plt.show()

if __name__ == ‘__main__’:
main()
[/python]

ネイピア数は微分しても値が変わらない、というのはわかった。
eを底とする指数関数 e^xをexp(x)と表すのもわかった。
しかし、これがなんで便利なんだろう。

連続した確率計算において、ネイピア数eは重要な役割を果たす
あ!

対数logの書き方

log[2]4 = 2
→ 2^2 = 4 となるからですね。
log[3]27 = 3

log[a]a = 1
log[a]1 = 0
log[a]X + log[a]Y は、、、log[a]XY これも当たり前ですね。
log[a]X – log[a]Y = log[a]X/Y うん、少し考えればわかる。
p*log[a]X = log[a]X^p うん、これもわかりますな。

logX / loga
あれーーーーーーーーーーーーーーーー。。。

aの0乗が1の理由

2^5 = 32
→ %2
2^4 = 16
→ %2
2^3 = 8
→ %2
2^2 = 4
→ %2
2^1 = 2

だから、
2^0 は、2%2で1
これは階乗の規則性からの説明。わかることはわかる。

a^x は、1*x*x …. という解釈。最初に1をかけているから、a^0は1になるという説明。
うーん、これはこじつけのような説明。。

指数法則
a^n x a^m = a^(n+m)
これはわかります。nを0にします。
a^0 x a^m = a^m
こうすると、a^0 = 1になります。
まあ、法則から証明するというのは帰納法的だが、しっくりとはきますね。

指数関数と対数関数(log)

指数関数の定義
a > 0, a != 1
y = a^x

a > 1 の時、xが増えるにつれyも増えていく
逆に 0 < a < 1のときは、x が増えるにつれ、yは逓減していく a^0 = 1 あれ、何故 a^0は1なんだ?? べき乗は掛け算の繰り返しだから、aを0回かけるなら 0じゃ無いの? なんか基礎中の基礎でつまづいた。。つまづいたというより、a^0=0であってると思うんだが。。

機械学習に必要な数学的基礎

ーーーーーーーーーーーーー
変数・定数
1次式と2次式
関数の概念
平方根
累乗と累乗根
指数関数と対数関数
自然対数
シグモイド関数
三角関数
絶対値とユークリッド距離
数列
要素と集合
ーーーーーーーーーーーーー
ちなみにこれ、中1から高校までの数学らしい。
指数関数、対数関数、自然対数、シグモイド関数、ユークリッド距離あたりから怪しくなってくるな。

– ニューラルネットワークでは、重み(w)という概念がある。コンピュータが自動的に重み(w)を学習する。学習したモデルを利用するときは重みが「定数」として扱われる。

– 一次式は直線、二次式は放物線
– 一番大きな次数についている係数の正負によりグラフの向きが異なる

xintd

ポート監視用のデーモンプログラム
inetdとTCP wrapper(tcpd)の組合せによるアクセス制限が一般的
xinetdの上位互換のinetd

xinetd
– 細かく設定可
– メール通知不可
– アドレス制御 固定長マスク
– 時間による制御可
– アクセス回数制限可
– サービスとインターフェイス 切り分け可
– フォワード機能可

xinetd は起動時に、このファイルから設定情報を読み込む

# default: off
# description: The rsync server is a good addition to an ftp server, as it \
#	allows crc checksumming etc.
service rsync
{
	disable	= yes
	flags		= IPv6
	socket_type     = stream
	wait            = no
	user            = root
	server          = /usr/bin/rsync
	server_args     = --daemon
	log_on_failure  += USERID
}

線形代数とは

– 行列とベクトルの性質を調べる学問
– 線形空間と線形変換を中心とした理論
– 行列、行列式、連立一次方程式の理論を含む

行列とは何か
数字を四角に並べたもの。あ、少し思い出してきた。。
1 4 8
2 3 8
7 5 4

線形代数の応用
→ 画像処理、3次元データ処理
→ PageRank
→ 統計学
→ 量子力学

連立方程式と行列
2x + 4 = 7
x + 3y = 6
係数が行列になる
2 4 x = 7
1 3 y = 6
→ 行列を使った方程式を解くことは、連立方程式を解くことと同じ

ベクトル
数字が縦横のどちらにしか並んでいないものをベクトルという

行列
記号、実数、複素数などを縦、横、長方形に並べたもの
-4 4.3
-1 3.5
5.7 12
横の並びを行、縦の並びを列
3 x 3行列 などと言ったりする
行列を構成する要素一つ一つを成分と呼ぶ
以下のようにi行j列の成分を表すことがある
a11 a12 a13
a21 a22 a23
a31 a32 a33
抽象的な行列は
A = [aij]
1行しかない行列を行ベクトル、1列しかない行列を列ベクトル

ベクトルの大きさ
||a|| = √x^2 + y^2

線形変換
scale, rotate, reflect, shearなど
なるほど、ベクトルだとこういうことができるのね。

微分の計算式

微分の関数とは

limb→a f(b)-f(a)/(b-a)

f(x)を微分するとf'(x)になる

(X^n)’ = nx^n-1
(sin x)’ = cos x
(tan x)’ = 1/cos^2x
(e^x)’ = e^x

うむ、微分の理論はなんとなくわかってきたか。

機械学習に必要な数学

数学基礎
→ 変数、定数、1次式、2次式、関数、平方根、累乗、累乗根、指数関数、対数関数、自然対数、シグモイド関数、三角関数、絶対値とユークリッド距離、数列、要素と集合

微分
→ 変数の微小な変化に対応する、関数の変化の割合の極限を求めること
→ 関数の各点の傾き
線形代数
確率・統計