神经网络模型
这里不重点介绍神经网络模型,这里有神经网络比较简洁的介绍和推导。[机器学习] Coursera ML笔记
SymPy(符号计算框架)的安装
我的系统为Ubuntu 14
安装比较简单:sudo apt-get install python-sympy【全部小写,csdn自动变成大写了◔ ‸◔?】
求导
为了简化叙述这里不用求和符号,w,b,x均为矩阵形式。
在python终端输入:
from sympy import *
w=Symbol('w')
b=Symbol('b')
x=Symbol('x')
y=Symbol('y')
#或者用下面的方式生成符号
#w,b,x,y=symbols('w b x y')
a=w*x+b
print a
这里可以看到a的输出
w
⋅
x
+
b
w⋅x+b
w⋅x+b
这里假设激活函数是tanh
out=tanh(a)
e=(y-out)**2
print e
输出:
(
y
−
t
a
n
h
(
b
+
w
⋅
x
)
)
2
(y - tanh(b + w⋅x))^2
(y−tanh(b+w⋅x))2
这里对e求w的微分
print diff(e,w)
输出:
−
2
⋅
x
⋅
(
y
−
t
a
n
h
(
b
+
w
⋅
x
)
)
⋅
(
−
t
a
n
h
2
(
b
+
w
⋅
x
)
+
1
)
-2⋅x⋅(y - tanh(b + w⋅x))⋅(- tanh ^2(b + w⋅x) + 1)
−2⋅x⋅(y−tanh(b+w⋅x))⋅(−tanh2(b+w⋅x)+1)
对e求b的微分
print diff(e,b)
输出:
(
y
−
t
a
n
h
(
b
+
w
⋅
x
)
)
⋅
(
2
⋅
t
a
n
h
2
(
b
+
w
⋅
x
)
−
2
)
(y - tanh(b + w⋅x))⋅(2⋅tanh^2 (b + w⋅x) - 2)
(y−tanh(b+w⋅x))⋅(2⋅tanh2(b+w⋅x)−2)
求导数是不是变得很简单?
总结
当然还有很多其他机器学习算法,如线性回归,逻辑回归等等,可以通过sympy的形式求导和积分,或者去验证自己的导数是否是正确的。这里只是一个入门级别的sympy使用介绍。详细可以点击这里有比较全面的tutorial,还有pdf文档