《深度学习入门·基于Python的理论与实现》
*感知机*——神经网络(深度学习)起源算法。接收多个信号,输出一个信号【信号取值只有0/1,0代表“不传递信号”,1代表“传递信号”】
*激活函数*——连接感知机和神经网络的桥梁
*朴素感知机*——单层网络,激活函数使用阶跃函数
*多层感知机*——神经网络,使用sigmoid函数等平滑的激活函数的多层网络
一、
1.激活函数
a. sigmoid函数:e=2.7182
使得神经网络中流动的是连续的实数值信号,平滑性
注:阶跃函数和sigmoid函数都属于非线性函数(线性函数),神经网络的激活函数必须使用非线性函数
b. ReLU函数(Rectified Linear Unit):输入大于0时,直接输出该值;小于等于0时,输出0
二、三层神经网络的实现
输入层(0层)有两个神经元,第1个隐藏层(第1层)有3个神经元,第2个隐藏层(第2层)有两个神经元,输出层(第3层)有两个神经元
- 回归问题——可以使用恒等函数(y=x)
- 二元分类问题——可以使用sigmoid函数
- 多元分类问题——可以使用softmax函数
def softmax(a):
c = np.max(a)
exp_a = np.exp(a-c)
sun_exp_a = np.sum(exp_a)
y = exp_a/sun_exp_a
return y
使用softmax出现的问题:当exp(a)中,a=1000时,结果为inf(无限大),溢出。在超大值之间进行除法运算时,结果会出现“不确定”的情况。
在使用softmax进行运算时,加上或减去某个常数不会改变运算的结果
注意:softmax函数输出值的总和为1
三、神经网络的学习
“学习”——从训练数据中自动获取最优权重参数的过程,引入损失函数——学习的目的,即损失函数尽可能小
- 线性可分问题,通过有限次数的学习,可解
- 非线性可分问题,无法通过自动学习来解决
在计算机视觉领域常用的特征量包括:SIFT、SURF、HOG
1、损失函数
a. 均方误差(mean squared)
- yk-神经网络的输出
- tk-监督数据
- k-数据的维数
b. 交叉熵误差(cross entropy error)
- log-以e为底
- tk-正确解标签(是为1,错为0)
- yk-神经网络的输出
2、数值微分
导数:表示某个瞬间的变化量
def numerical_diff(f,h):
h=1e-4
return (f(x+h)-f(x-h))/(2*h)