asp.net企业网站源码,电商网站建设 网站定制开发,百姓网上海招聘,网站漏洞 在线扫描目录
前言
P61-P68
激活函数
Softmax算法
P69-P73
Adam算法
更多类型的层
模型评估
P74-P79
偏差和方差
建立表现基准
学习曲线
偏差和方差与神经网络
前言
这是吴恩达机器学习笔记的第四篇#xff0c;第三篇笔记请见#xff1a;
吴恩达机器学习全课程笔记第…目录
前言
P61-P68
激活函数
Softmax算法
P69-P73
Adam算法
更多类型的层
模型评估
P74-P79
偏差和方差
建立表现基准
学习曲线
偏差和方差与神经网络
前言
这是吴恩达机器学习笔记的第四篇第三篇笔记请见
吴恩达机器学习全课程笔记第三篇
完整的课程链接如下
吴恩达机器学习教程bilibili
推荐网站
scikit-learn中文社区
吴恩达机器学习资料github
P61-P68
激活函数 激活函数Activation Function是一种添加到人工神经网络中的函数旨在帮助网络学习数据中的复杂模式。在神经元中输入的input经过一系列加权求和后作用于另一个函数这个函数就是这里的激活函数 sigmoid的替代品-ReLU 对于二进制分类问题使用sigmoid激活函数或许是最好的选择输出的刚好是标签为1的概率
在解决一个回归问题的时候可以选择不同的激活函数对于股票问题可以选择普通的线性激活函数对于其它的结果不为负的问题可以选用ReLU 使用relu激活函数不仅本身计算快而且可以使神经网络梯度下降得快一些 结合之前的神经网络例子给出tensorflow代码 在神经网络的隐藏层中需要使用非线性激活函数 这是因为需要在网络中引入非线性来学习复杂的模式。 如果没有非线性激活函数具有许多隐藏层的神经网络将成为一个巨大的线性回归模型这对于从现实世界数据中学习复杂模式毫无用处。
如果不用激活函数每一层输出都是上层输入的线性函数无论神经网络有多少层输出都是输入的线性组合即W W3*[W2*W1*x)]。 如果隐藏层不使用激活函数仅在输出层使用sigmoid函数那么效果仅仅和标准Logistic回归一样 Softmax算法
多分类问题 softmax回归算法是logistics回归的推广 下面展示softmax的成本函数 softmax作为输出的激活函数可以使每个激活值都依赖于z的所有值还是拿之前那个识别手写数字的例子来看 写成代码的形式 数字精确度问题 通过这个例子知道虽然我们计算softmax成本函数的方法是正确的还有一种更加准确的计算方法可以去减少误差
对于logistics回归 对于softmax 完整的tensorflow代码为 多标签输出分类问题注意和多分类问题的区别 解决这种问题的一种方法是把它看作三个完全独立的机器学习问题建立神经网络检测是否有车是否有公交等
还有一种方法是训练一个可以直接输出三个结果的神经网络 P69-P73
Adam算法
梯度下降是一种最小化成本函数的方法下面介绍其它的方法
有一种方法叫做Adam algorithm可以自动调整学习率 算法的原理是如果w和b能够朝着一个大致相同的方向移动那么就提高学习率反之降低学习率将其应用在MNIST的例子中代码如下在compile中增加一个优化器的参数即可同时包含了初始的学习率 更多类型的层
到目前为止我们使用的所有神经网络层都是密集层型的下面给出一个不同类型的神经网络层的例子
密集层 卷积层 卷积神经网络 卷积神经网络CNN是一种深度学习模型主要用于处理具有类似网格结构的数据如图像。CNN通过使用卷积层自动学习空间层次的特征无需手动特征提取。卷积层内的卷积操作帮助模型学习图像中的小部分然后将这些局部特征组合成更高级的形式以实现复杂任务的学习 核心组件介绍卷积层使用一组可学习的滤波器来扫描输入数据每个滤波器负责提取一种特定的特征。激活函数引入非线性使网络能够学习复杂的模式常用的激活函数有ReLU。池化层降低特征图的空间维度减少计算量和参数数量防止过拟合。全连接层将前面卷积层和池化层提取到的特征图转换为一维特征向量进行最终的分类或回归分析。 调试学习算法 模型评估
将数据集分为训练集和测试集 然后分别计算误差 对于分类问题使用分类的成本函数 模型选择 此时有一个问题这里的测试集主要目的是为了挑选在测试集上表现最好的模型也就是说最后得到模型之后这个值一定是最小的但是这个值是被挑选出来的并不能真正反映模型的性能
还有一种优化的方法是把数据集分为三个部分除了训练集和测试集加上一个交叉验证集 此时三部分数据集的各功能就如下所示 训练集 训练阶段 用于构建我们的模型我们的模型在训练集上进行学习通常在这个阶段我们可以有多种方法进行训练验证集 模型挑选阶段 用于挑选最优模型超参的样本集合使用验证集可以得到反向传播什么时候结束以及超参怎么设置最合理。主要目的是为了挑选在验证集上表现最好的模型。测试集 验证阶段 评估泛化误差 在我们挑选好验证集上表现最好的模型之后用于评估该模型泛化能力的数据集。 P74-P79
偏差和方差
这部分我没看太懂网课因为没字幕但是有一个博客写得很明白链接如下
诊断偏差与方差
诊断偏差和方差 欠拟合为高偏差过拟合为高方差 当 Jtrain(θ) ≈ Jcv(θ)但两者都非常高时是模型欠拟合导是高偏差引起的可以适当增加多项式次数解决 当 Jcv(θ) Jtrain(θ)是由于模型过拟合导致高方差引起可以通过增加样本数据量解决
接下来看看正则化参数λ对偏差和方差的影响 如图所示当λ很大时会发生高偏差另一个极端当λ很小时会发生高方差
具体的Jtrain和Jcv与λ的定性关系如下所示 建立表现基准
误差达到多大算大达到多大算小这时需要建立一个对比的标准去判断一个新算法的性能可以根据下面三个方面去对比 当然也可以结合上述的基准去研究前面学习的偏差和方差 学习曲线
学习曲线是用来帮助理解算法如何工作的一种方法如下所示对于二次多项式当增加训练集的数量时Jtrain和Jcv的变化 对于高偏差的算法就算增大数据集的量也不能明显地改善算法的性能 而对于高方差的曲线增大数据集数量有利于改善算法使学习的效果达到表现基准左右 在debug的时候下面常见的六个操作对偏差和方差的影响关系如下 偏差和方差与神经网络
神经网络给了我们一种新的方法去解决高偏差和高方差的问题如下所示
更大的神经网络导致了更大的计算量这也就促进了gpu等加速硬件的发展 只要合适的进行规则化神经网络就不会出现方差过大的问题 规则化的神经网络tensorflow代码如下