感知机
美国学者Frank Rosenblatt在1957年提出来的。
给予输入x,权重w和偏差b;感知机输出:
w称为权重:控制输入信号的重要性的参数
b称为偏置:偏置是调整神经元被激活的容易程度参数
- 感知机局限性:感知机的局限性就是只能表示由一条直线分割的空间
面对线性不可分问题
用非线性的曲线划分出非线性空间
多层感知机
多层感知机:最简单的深度神经网络
单隐藏层
隐藏层大小是超参数
单隐藏层——单分类
激活函数
激活函数:刚才登场的h(x)函数会将输入信号的总和转换为输出信号,这种函数一般称为激活函数(activation function)。
如“激活”一词所示,激活函数的作用在于决定如何来激活输入信号的总和
激活函数在神经元中非常重要的。为了增强网络的表示能力和学习能力,激活函数需要具备以下几点性质:
(1) 连续并可导(允许少数点上不可导)的非线性函数。
(2) 激活函数及其导函数要尽可能的简单,有利于提高网络计算效率。
(3)激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小,否则会影响训练的效率和稳定性。
常用的激活函数
- 阶跃函数:以0为界,一旦输入超过0,就切换输出1,否则输出0
- S型(sigmoid)激活函数(挤压函数)
- tanh激活函数(双曲正切)将输入映射到 (-1, 1)
- RELU函数(线性修正函数)ReLU: 线性修正单元
多隐藏层多分类
总结
多层感知机使用隐藏层和激活函数来得到非线性模型
常用激活函数是Sigmoid,Tanh,RELU
使用Softmax来处理多分类
超参数为隐藏层数和各个隐藏层大小
学习过程
学习的过程:神经网络在外界输入样本的刺激下不断改变网络的连接权值乃至拓扑结构,以使网络的输出不断地接近期望的输出。 学习的本质:对可变权值的动态调整
参数更新
前向传播(正向传播)
输入样本--输入层--各隐藏层--输出层
反向传播(误差反传)
输出层——各隐藏层——输入层
计算神经网络参数梯度的方法
修正各层单元的权值
训练误差泛化误差
训练误差:模型在训练数据集上的误差
泛化误差: 模型在新数据集上的误差
验证数据集和测试数据集
如何计算训练误差和泛化误差呢?
验证数据集:一个用来评估模型好坏的数据集
例如:拿出50%的训练数据
不要跟训练数据集混在一起(常犯错误)
测试数据集:评估最终模型的性能
理论上严格的讲,是只用一次的数据集
例如高考
K-折交叉验证
在没有足够的数据时非常有用
算法:
将训练数据划分为 K 个部分对于 i = 1,...,K
使用第 i 部分作为验证集,其余部分用于训练
报告 K 个部分在验证时的平均误差
常见 K 值选择:K=5或10
过拟合、欠拟合
当学习器把训练样本学得"太好"了的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质——过拟合;
对训练样本的一般性质尚未学好——欠拟合
模型复杂度的影响
很难比较不同算法之间的复杂度;例如树与神经网络
给定算法族,两个主要因素很重要:
参数个数
每个参数值的选择范围
数据复杂度的影响
多种因素很重要:
- 样本数量
- 每个样本中的特征数量
- 时间、空间结构
- 多样性