多层感知机
1.感知机
美国学者Frank Rosenblatt在1957年提出来的。
给予输入x, 权重 w 和偏差b;感知机输出
二分类 (0 或 1)
Vs. 回归:输出实数
Vs. Softmax:输出的概率,多个分类
w称为权重:控制输入信号的重要性的参数
b称为偏置:偏置是调整神经元被激活的容易程度参数
与门、与非门、或门、异或门
2.感知局限性
感知机的局限性:感知机的局限性就是只能表示由一条直线分割的空间。
面对这种线性不可分的情况该怎么办呢?
用非线性的曲线划分出非线性空间
——多层感知机:最简单的深度神经网络
多层感知机、单隐藏层、单隐藏层-单分
3.激活函数
激活函数:刚才登场的h(x)函数会将输入信号的总和转换为输出信号,这种函数一般称为激活函数(activation function)。
如“激活”一词所示,激活函数的作用在于决定如何来激活输入信号的总和。
激活函数在神经元中非常重要的。为了增强网络的表示能力和学习能力,激活函数需要具备以下几点性质:
(1) 连续并可导(允许少数点上不可导)的非线性函数。
(2) 激活函数及其导函数要尽可能的简单,有利于提高网络计算效率。
(3) 激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小,否则会影响训练的效率和稳定性。
阶跃函数
以0为界,一旦输入超过0,就切换输出1,
否则输出0
可以说感知机使用了阶跃函数作为激活函数。
4.训练误差和泛化误差
训练误差:模型在训练数据集上的误差
泛化误差: 模型在新数据集上的误差
示例:使用历年试真题准备将来的考试
再历年考试真题取得好成绩(训练误差)并不能保证未来考试成绩更好(泛化误差)
学生A 通过死记硬背学习在历年真题考试中取得好成绩
学生B理解并给出答案的解释
5.验证数据集和测试数据集
如何计算训练误差和泛化误差呢?
•验证数据集:一个用来评估模型好坏的数据集
例如拿出50%的训练数据
不要跟训练数据集混在一起(常犯错误)
•测试数据集:评估最终模型的性能
理论上严格的讲,是只用一次的数据集
例如高考
6.k-折交叉验
在没有足够的数据时非常有用
算法:
将训练数据划分为 K 个部分
对于 i = 1,...,K
使用第 i 部分作为验证集,其余部分用于训练
报告 K 个部分在验证时的平均误差
常见 K 值选择:K=5或10
7.过拟合和欠拟合
当学习器把训练样本学得"太
好"了的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质——过拟合;
对训练样本的一般性质尚未学好——欠拟合
8.数据复杂度影响
多种因素很重要:
样本数量
每个样本中的特征数量
时间、空间结构
多样性