哈工大第一次作业
本课是基于《动手学深度学习》pytorch版
需要配置pytorch和d2l环境
由于安装过pycharm和pytorch,这里只介绍如何安装d2l,博主能力有限,这里只介绍一种方法。
1.使用win+r,输入cmd打开命令终端
2.输入指令conda activate pytorch激活pytorch注意pytorch是已经配置的pytorch名称,若名称不一样可用conda list检测自己配置的名称,eg:我将我配置的pytorch环境命名为pytorch-cpu,故我的激活指令为conda activate pytorch-cpu
3.输入pip install d2l == 0.15注意书中的指令为pip install d2l==0.17,但是我的pytorch版本过低下载不成功,故将版本换成0.15,基本能满足使用,下载如果还不行建议换网,我用校园网下载速度过慢,几次没下成功,换手机热点开5g后,速度有明显提升,且下载完成。
下面进入正文。
线性回归
定义:利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。
基本步骤为
线性分类
线性分类器则透过特征的线性组合来做出分类决定,以达到此种目的。简言之,样本通过直线(或超平面)可分。
简单来说就是找到一条直线使相同区域的点到直线的距离的正负值相同,但是由于我们要求输出为0-1,即该点属于这一区域的概率,因此我们引入Sigmoid函数对其改变
对数回归与多分类回归
二分类问题可使用条件概率描述
这里我们假设输出为{0,1}。重新修改指标函数
对其最小化有
根据Bayes公式
假设各样本相互独立,即服从Bernoulli分布。则的合理估计值应当是让所有样本事件产生的几率最大,即应当是极大似然的,因此取似
或
对上式最大化等价于
多分类回归
对于有多个标记的分类问题,分类函数如下
因为是多分类,所以需要多个分割超平面,因此有:
取代价函数:
对应梯度:
这种方式又称为Softmax
神经元模型
作用函数
1.非对称性Sigmoid函数
或
2.非对称性Sigmoid函数
或
3.对称型阶跃函数
连接权值的调整量与输入与输出的乘积成正比:
感知机模型
原理:
公式中的直线方程:ax0+by0+c= 0,假设任一点的坐标为(x0, y0),到直线的距离为
如果是高维情况,分类面为超平面,则有:
感知机从输入到输出的模型如下:
注意到,如果样本正确分类,则有
因此可定义损失函数如下:
故其步骤为
多层感知机
尽管以上已经问题已经解决,但是对于xor问题无法解决,于是多层感知器出现
它实在输入和输出层之间加多层隐单元,效果如图
多层感知器网络,有如下定理:
定理1 若隐层节点(单元)可任意设置,用三层阈值节点的网络,可以实现任意的二值逻辑函数。
定理2 若隐层节点(单元)可任意设置,用三层S型非线性特性节点的网络,可以一致逼近紧集上的连续函数或按 范数逼近紧集上的平方可积函数。
多层前馈网络及BP算法概述
多层前馈网络的反向传播 (BP)学习算法,简称BP算法,是有导师的学习,它是梯度下降法在多层前馈网中的应用。
BP学习算法由正向传播和反向传播组成:
① 正向传播是输入信号从输入层经隐层,传向输出层,若输出层得到了期望的输出,
则学习算法结束;否则,转至反向传播。
② 反向传播是将误差(样本输出与网络输出之差)按原联接通路反向计算,由梯度下
降法调整各层节点的权值和阈值,使误差减小
3.1 BP算法基本思想
步骤
前向传播
考虑三层神经网络。对于当前样本,
隐含层输出:对于第l层第i个神经元,
假设仅有一层隐层,则输出:
误差反传——输出层
首先考虑输出层权值。根据链式求导法则,
进一步有:
同理
误差反传——隐含层
神经网络分类
考虑输出层为线性节点 (单输出):
考虑二分类问题(单输出):
权值正则化
以上即为本周的大概内容。