吴恩达机器学习
学习视频参考b站:吴恩达机器学习
本文是参照视频学习的随手笔记,便于后续回顾。
TensorFlow实现神经网络
模型训练细节
训练步骤与和逻辑回归的比较
训练模型分为三步:
1.确定f(x)函数
2.确定损失函数和代价函数
3.通过数据训练寻找最小值
详细介绍
1.创建模型
2.损失和代价函数
如果模型解决回归而不是分类问题,可以用别的损失函数,例如下方的MeanSquareError()
3.梯度下降
调用model.fit函数设定输入输出与迭代次数
Neural network libraries--神经网络库:像是TensorFlow和PyTorch
激活函数(Activation Function)
sigmoid激活函数替代(Alternatives to the sigmoid activation)
需求预测模型
替代函数像是ReLU(Rectified Linear Unit)
常用的激活函数
使用线性激活函数经常说是没有使用激活函数,因为g(z)=z
如何选择激活函数
如果是二进制分类问题,使用sigmoid函数
如果是回归,输出有正负,使用线型激活函数
如果是回归,输出只有正,使用ReLU函数
现如今大多数都是使用ReLU函数而不是sigmoid函数,原因:
1.sigmoid要取幂等等操作,繁琐
2.ReLU左边一段是平的,而sigmoid两边都是平的,会导致梯度下降会很慢,图像有很多平坦
Summary
隐藏层建议只使用ReLU,输出层如果是二进制分类问题,可以使用sigmoid
还有很多不同不同的激活函数,在某些具体情况可能效率高
为什么需要激活函数
如果激活函数都是用线性函数,模型训练会跟线性回归没有什么区别
全部使用线性函数,模型做的就是线性回归,只在最后输出层使用sigmoid函数,模型做的就是逻辑回归
所以不要在隐藏层使用线性函数
多分类问题(Multiclass)
定义&示例
定义:不只是取0,1两个值,可以取少量的超过两个的值
示例:划分空间界限,求不同值的概率
Softmax(Regression Algorithm)
输出值a的表达式
是逻辑回归的推广,是多类分类上下文的二进制分类算法
4个可能输出示例(Softmax):
所有值的可能性相加为1,如果输出值只有2个,那么Softmax回归算法和逻辑回归算法一样
损失函数与代价函数
神经网络的Softmax输出
使用Softmax函数的输出层常常称为Softmax层
Softmax层的每一个输出值都需要z1......z10所有的函数值作为输入
TensorFlow实现
损失函数使用SparseCategoricalCrossentropy(稀疏分类交叉熵)函数
以下这个版本的代码不推荐使用,下面会提供效果更好的实施版本,使用下面标题的代码!!!
TensorFlow的改进实现
同一个值,通过不同的计算方式减少舍入误差
逻辑回归改进
直接指定他的loss函数而不是通过中间值a来传值,效果会更好
from_logits=true指的是通过z来传值,就像是跳过中间值a直接指定loss函数
Softmax函数改进
记住输出层的激活函数要改成线性函数,因为要直接提供z
因为输出层改成线性函数,所以输出值不再是输出概率a1......a10,而是值z1......z10
多个输出的多分类(Classification with multiple outputs)
每个图都检测三个01的分类问题(多标签分类)
用一个神经网络解决三个分类问题,输出层使用sigmoid函数(解决01问题),而不是用三个神经网络
高级优化方法
为什么需要优化方法?
在梯度下降过程中,学习率或大或小,导致梯度下降参数更新的效率并不高,所以需要一个算法更新学习率α
因此引入Adam算法
Adam算法
并没有全局单一的学习率α
梯度下降朝着正确的方向进行,就可以增大学习率,如果来回震荡,就可以适当减少学习率
具体实现比较复杂,在此不做讲解
Adam需要设置初始学习率,这里设置的是0.03
其他的网络层类型
之前学习的网络层都是密集层类型(dense),每一个神经元都使用上一层的所有输出
这里介绍一个不同的类型,像是卷积层(Convolutional Layer)
每一个神经元都使用前一层的一部分输出作为输入
原因:
1.加快计算速度
2.可以使用更少的训练数据,并且不太容易过拟合(Overfitting)
如果有多个卷积层,就称为卷积神经网络(Convolutional Neural Network)
示例心电图:
把列数据分为x1......x100作为输入
Summary
本周主要学习了以下内容:
1.如何使用TensorFlow实现神经网络,模型训练的步骤
2.如何选择激活函数,为什么需要激活函数
3.Softmax回归算法实现多分类,损失函数与代价函数,代码实现,代码改进
4.高级优化方法Adam算法
5.卷积层与卷积神经网络的概念