吴恩达《Machine Learning》精炼笔记 5:神经网络

简介: 吴恩达《Machine Learning》精炼笔记 5:神经网络

系列文章:


吴恩达《Machine Learning》精炼笔记 1:监督学习与非监督学习

吴恩达《Machine Learning》精炼笔记 2:梯度下降与正规方程

吴恩达《Machine Learning》精炼笔记 3:回归问题和正则化

吴恩达《Machine Learning》精炼笔记 4:神经网络基础


今天带来第五周课程的笔记:神经网络。本文是在上节神经网络的基础上,做了进一步的阐述,内容包含:


  • 神经网络代价函数
  • 反向传播法及解释
  • 梯度检验
  • 神经网络的小结


神经网络代价函数


参数解释


对几个参数的标记方法进行说明解释:


image.png


分类讨论


主要是两类:二分类和多类分类


image.png


代价函数


逻辑斯蒂回归(LR)中的代价函数:


image.png

在逻辑斯蒂回归中,只有一个输出变量称之为标量scalar。


但是在神经网络中会有多个输出变量,hθ(x)是一个K维的向量。


假设第i个输出函数:


image.png

代价函数J表示为:


image.png

解释说明:


image.png



反向传播法Backpropagation Algorithm



image.png

image.png

  • 首先计算最后一层的误差
  • 再一层层地反向求出各层的误差,直到倒数第二层


前向传播例子


假设有一个数据样本:



image.png

前向传播法就是通过一层层地按照神经网络的顺序从输入层到输出层计算下去。


反向传播例子


image.png

1. 从最后一层的误差开始计算:


image.png


2. 用δ表示误差,误差=模型预测值-真实值


image.png

3. 前一层的误差


image.png

image.png

4. 再前一层的误差

image.png

第一层是输入变量,不存在误差


5. 假设λ=0,如果不做正则化处理时


image.png

对上面的式子中各个上下标的含义进行解释:


  • l代表的是第几层
  • j代表的是计算层中的激活单元的下标
  • i代表的是误差单元的下标


算法


image.png



  • 利用正向传播方法计算每层的激活单元
  • 利用训练集的真实结果与神经网络的预测结果求出最后一层的误差
  • 最后利用该误差运用反向传播法计算出直至第二层的所有误差。
  • 便可以计算代价函数的偏导数


反向传播的直观理解


前向传播原理


  • 2个输入单元;2个隐藏层(不包含偏置单元);1个输出单元
  • 上标ii表示的是第几层,下标表示的是第几个特征或者说属性


图中有个小问题,看截图的右下角!!!


image.png


根据上面的反向传播法得到的结论:

image.png

反向传播原理


image.pngimage.png


参数展开


上面的式子中实现了怎么利用反向传播法计算代价函数的导数,在这里介绍怎么将参数从矩阵形式展开成向量形式


image.png



梯度检验


如何求解在某点的导数


image.png


在代价函数中怎么对某个参数θ求导


image.png


神经网络小结


首要工作


在构建神经网络的时候,首先考虑的是如何选择网络结构:多少层和每层多少个神经单元


  • 第一层的单元数即我们训练集的特征数量。
  • 最后一层的单元数是我们训练集的结果的类的数量。
  • 如果隐藏层数大于1,确保每个隐藏层的单元个数相同,通常情况下隐藏层单元的个数越多越好。


训练神经网络步骤


  1. 参数的随机初始化
  2. 利用正向传播方法计算所有的hθ(x)
  3. 编写计算代价函数 JJ的代码
  4. 利用反向传播方法计算所有偏导数
  5. 利用数值检验方法检验这些偏导数
  6. 使用优化算法来最小化代价函数


至此,第五周的课程笔记完毕!

相关文章
|
3月前
|
Linux 开发工具 Android开发
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
ijkplayer是由Bilibili基于FFmpeg3.4研发并开源的播放器,适用于Android和iOS,支持本地视频及网络流媒体播放。本文详细介绍如何在新版Android Studio中导入并使用ijkplayer库,包括Gradle版本及配置更新、导入编译好的so文件以及添加直播链接播放代码等步骤,帮助开发者顺利进行App调试与开发。更多FFmpeg开发知识可参考《FFmpeg开发实战:从零基础到短视频上线》。
277 2
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
|
3月前
|
机器学习/深度学习 数据可视化 计算机视觉
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
这篇文章详细介绍了如何通过可视化深度学习中每层特征层来理解网络的内部运作,并使用ResNet系列网络作为例子,展示了如何在训练过程中加入代码来绘制和保存特征图。
70 1
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
|
3月前
|
机器学习/深度学习 数据可视化 Windows
深度学习笔记(七):如何用Mxnet来将神经网络可视化
这篇文章介绍了如何使用Mxnet框架来实现神经网络的可视化,包括环境依赖的安装、具体的代码实现以及运行结果的展示。
63 0
|
3月前
|
机器学习/深度学习 编解码 算法
轻量级网络论文精度笔记(三):《Searching for MobileNetV3》
MobileNetV3是谷歌为移动设备优化的神经网络模型,通过神经架构搜索和新设计计算块提升效率和精度。它引入了h-swish激活函数和高效的分割解码器LR-ASPP,实现了移动端分类、检测和分割的最新SOTA成果。大模型在ImageNet分类上比MobileNetV2更准确,延迟降低20%;小模型准确度提升,延迟相当。
93 1
轻量级网络论文精度笔记(三):《Searching for MobileNetV3》
|
3月前
|
机器学习/深度学习 网络架构 计算机视觉
目标检测笔记(一):不同模型的网络架构介绍和代码
这篇文章介绍了ShuffleNetV2网络架构及其代码实现,包括模型结构、代码细节和不同版本的模型。ShuffleNetV2是一个高效的卷积神经网络,适用于深度学习中的目标检测任务。
121 1
目标检测笔记(一):不同模型的网络架构介绍和代码
|
3月前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
76 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
3月前
|
编解码 人工智能 文件存储
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》
YOLOv7是一种新的实时目标检测器,通过引入可训练的免费技术包和优化的网络架构,显著提高了检测精度,同时减少了参数和计算量。该研究还提出了新的模型重参数化和标签分配策略,有效提升了模型性能。实验结果显示,YOLOv7在速度和准确性上超越了其他目标检测器。
67 0
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》
|
3月前
|
机器学习/深度学习 Python
深度学习笔记(九):神经网络剪枝(Neural Network Pruning)详细介绍
神经网络剪枝是一种通过移除不重要的权重来减小模型大小并提高效率的技术,同时尽量保持模型性能。
94 0
深度学习笔记(九):神经网络剪枝(Neural Network Pruning)详细介绍
|
3月前
|
机器学习/深度学习 算法 TensorFlow
深度学习笔记(五):学习率过大过小对于网络训练有何影响以及如何解决
学习率是深度学习中的关键超参数,它影响模型的训练进度和收敛性,过大或过小的学习率都会对网络训练产生负面影响,需要通过适当的设置和调整策略来优化。
630 0
深度学习笔记(五):学习率过大过小对于网络训练有何影响以及如何解决
|
3月前
|
机器学习/深度学习 算法
深度学习笔记(四):神经网络之链式法则详解
这篇文章详细解释了链式法则在神经网络优化中的作用,说明了如何通过引入中间变量简化复杂函数的微分计算,并通过实例展示了链式法则在反向传播算法中的应用。
93 0
深度学习笔记(四):神经网络之链式法则详解