cz教程笔记第一章
计算图
- 计算图--AI的核心任务是模型的定义和模型参数的求解,计算图可以清楚地表达出数据的流转方式、计算方式等过程;
- 神经网络的计算由前向传播和反向传播构成:前向传播计算预测结果和损失,反向传播计算参数的偏导数,并对参数及进行梯度下降;
- 偏导数的计算可以使用链式法则,一步步反向推进,这就是反向传播;
- 计算图由边和节点组成,节点代表操作,边代表节点之间传递的张量
学习原理
- 神经网络学习的目的是找到合适的参数w和b,可以通过梯度下降法达到这个目的;
- 梯度下降会一步步改变参数w和b的值,使得损失函数的值逐步变小;
- 在数据集给定的情况下,损失函数是关于参数的一个函数,'学习'或'神经网络训练的目的'就是不断更新参数的值,是损失函数越来越小,预测结果越来越准确;
- 最重要的选择就是学习率的设定了
偏导数计算--以logistic为例
- 作为广义线性模型,因简单、可并行化、可解释性强等原因,logistic回归深受工业界喜爱;
- 人工智能的重点不在公式的推到,而在于对AI机制的理解和如何利用人工智能解决实际问题;
- 偏导数的计算采用链式法则,逐层反向计算偏导数,直至得到最终模型参数关于损失函数的偏导数;
- 成本是多个样本损失的平均值,计算多个样本的损失就等于所有样本损失的平均值;
如何向量化人工智能算法
- 用多个样本训练模型时,对模型参数关于成本函数的偏导数计算平均值,是为了得到能满足最广大样本的参数;
- 既然通过计算偏导数的平均能满足最关大训练样本,那么期望这套参数能最大程度地适用于新的样本是合理的;
- 当维度不同的两个对象(如矩阵、向量)进行运算时,python会通过复制元素来使得两个操作对象的维度相同,这是python的广播机制;
- 要理解1.2.9小节的for循环代码和向量化后的代码;
一些基础概念
- 标签
与特征
;
- 样本:有标签的样本
与无标签的样本
;
- 模型:定义了 标签和特征之间的关系,如垃圾检测邮件模型会将某些特征与"垃圾邮件"紧密联系起来;
- 模型的两个生命周期:学习和推断;
特征工程
- 特征工程指将原始数据转化为特征矢量的过程;
- 机器学习模型必须将特征表示为实数向量,因为特征值要与模型权重相乘;
- 分类特征指有限个可能取值的特征;
- 分类特征的特征工程方法:
内容 | 优点 | 缺点 | |
直接映射法 | 简单明了 | 不一定一一对应 | |
独热编码(稀疏表示法) | 二元向量只有1个分量为1 | 有效为每个特征值创建布尔变量 | 当特征取值种类过大,二元向量维数很大且只有一个分量为1(低效表示方法) |
多热编码 (稀疏表示法) | 二元向量有多个分量为1 | 有效为每个特征值创建布尔变量 | 同上 |
密集表示法 | 只在出现的单词处表示为1 |
特征选择
- 避免那些很少出现的特征值,比如样本编号;
- 选则具有清晰明确含义的特征;
- 实际数据内不掺杂特殊值;
- 挑出坏样本并加工可以挽救的样本,即使少量的坏样本也会破坏大规模的数据集
- 缩放特征值指将特征由自然范围转化为标准范围,其优势:
- a)梯度下降法更快速收敛;b)帮助避免NaN陷阱;c)帮助模型为每个特征确定合适的权重;
- 清查是另一个常用的数据清理手段,内容包括:
- %遗漏值%重复样本%不良标签%不良特征值;
浅层神经网络极其前向、反向传播
- 线性回归:
- 逻辑回归:
- 为了将逻辑回归映射到二元类别,必须设定分类阈值
- 单神经网络
,
,
- 上式中
就是预测结果,
是损失函数;
- 通过反向传播,可以计算参数
关于损失函数的偏导数,进而进行梯度下降;
- 此后再次进行前向传播,不断优化参数;
- 复杂的神经网络是由单神经网络组成的,一般由输入层,隐藏层和输出层组成;
- 神经网络的层数,每层神经元的个数都是超参数,根据经验手动调参得到;
- 调参的参考:根据问题的实际背景,参考相关论文,借鉴相关领域专家的经验;
- 隐藏层神经元的数量,建议由一个较小值开始,若欠拟合,则慢慢增加网络的层数和神经元,过拟合则反之;
- 公式上角标表示第几层,下角标表示该层的第几个神经元;
- 所有向量均是列向量,利用向量化来提高前向传播的效率;
- 多样本组成样本矩阵,每一列是一个样本,多分类问题的
激活函数同样是作用于每一列的;
为什么需要激活函数
- 没有激活函数,神经网络的层数再多也没用,因为都相当于一层;
- 没有激活函数,神经网络只能解决简单的线性问题;
- 加入激活函数,只要神经网络层数足够多,那么神经网络就可以解决一切问题;
常见的激活函数
激活函数名 | 内容 | 优点 | 缺点 |
sigmoid/softmax | 适合在神经网络二/多分类的输出层 |
| |
tanh | 二元向量只有1个分量为1 | 有效为每个特征值创建布尔变量 | 当特征取值种类过大,二元向量维数很大且只有一个分量为1(低效表示方法) |
relu | 二元向量有多个分量为1 | 有效为每个特征值创建布尔变量 | 同上 |
leaky relu | 只在出现的单词处表示为1 |