从0开始学习机器学习--Day14--如何优化神经网络的代价函数

在上一篇文章中,解析了神经网络处理分类问题的过程,类似的,在处理多元分类问题时,神经网络会按照类型分成多个输出层的神经元来表示,如下:

处理4个分类问题时的神经网络

我们可以看到,相较于之前的分类问题,,这里用的输出是以向量的方式来区分行人、汽车、摩托车还有卡车四种图片,即输出四维向量与原始数据去对比是否预测成功。

神经网络的代价函数(Cost function of Neural Networks)

在学习代价函数之前,让我们先了解一些基本知识。在神经网络中,我们把记为神经网络的层数, 则是对应层数的神经元个数。通常我们将神经网络的分类问题分为二元和多元,当学习问题是二元分类问题时,我们只有一个输出单元,其值为0或1,此时,也记作;如果是多元分类,则输出的是维向量。

神经网络对分类问题的代价函数

如图,神经网络的代价函数跟之前在逻辑回归里讲的一样,采用一般形式。不同的是,由于神经网络的输出不止一个,在形式上相应地有些许改变,我们可以看到和原来的相比多了求和符号,其实这是代表了把每个输出和每个函数值的损失都加在一起,这也是这个求和符号写在了里面,就是为了说明其跟也有关系,后面正则项的求和符号则是因为我们前文讲过的神经网络里参数项的矩阵维度发生了改变,注意这里参数的下标都是从1开始,这主要是为了忽略偏置单元,在逻辑回归里我们也正是这样做的。

反向传播算法(Backpropagation algorithm)

跟梯度下降一样,反向传播算法的用途也是用来优化代价函数,让我们先回顾只有一个训练样本时神经网络正常的计算过程:

神经网络正向传播时的计算过程

如图,神经网络正向传播时是从输入层开始,逐层计算知道最后输出层输出

而反向传播算法,顾名思义,就是从输出层逐层往前计算。不同的是,这里计算的是每个神经元的误差。初始的误差,后续第三、第二层的误差为,这里的其实等于。之所以没有计算第一层的误差是因为第一层是输入层,是神经网络观察训练集得出的直观数据。而如果忽略正则项,那么对代价函数求偏导的式子则可以写成,联系到之前所说对g函数求偏导的变形,其实能看出这里的式子就是将几个式子做了联立而已。

而对于有m个数据的训练集,神经网络将两个算法结合起来计算就是:

神经网络结合两个算法的计算过程

如图,我们可以看到,对于一般的数据集,神经网络先是走正向传播算法,计算出输出层的每个神经元的激活项(注意,这里的实际上就是上幅图提到的,只是写成了大写,从1开始则是因为不计算偏置单元),然后再走反向传播算法,将每个神经元的误差计算出来,乘在一起后再加上正则项,就形成了我们的:

学习内容来自于b站吴恩达大佬课程:https://www.bilibili.com/video/BV1By4y1J7A5?spm_id_from=333.788.player.switch&vd_source=867b8ecbd62561f6cb9b4a83a368f691&p=1

相关推荐
OpenBayes贝式计算10 小时前
解决视频模型痛点,TurboDiffusion 高效视频扩散生成系统;Google Streetview 涵盖多个国家的街景图像数据集
人工智能·深度学习·机器学习
OpenBayes贝式计算11 小时前
OCR教程汇总丨DeepSeek/百度飞桨/华中科大等开源创新技术,实现OCR高精度、本地化部署
人工智能·深度学习·机器学习
够快云库1 天前
能源行业非结构化数据治理实战:从数据沼泽到智能资产
大数据·人工智能·机器学习·企业文件安全
西岸行者1 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
B站_计算机毕业设计之家1 天前
电影知识图谱推荐问答系统 | Python Django系统 Neo4j MySQL Echarts 协同过滤 大数据 人工智能 毕业设计源码(建议收藏)✅
人工智能·python·机器学习·django·毕业设计·echarts·知识图谱
悠哉悠哉愿意1 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
Flying pigs~~1 天前
机器学习之逻辑回归
人工智能·机器学习·数据挖掘·数据分析·逻辑回归
别催小唐敲代码1 天前
嵌入式学习路线
学习
Evand J1 天前
通过matlab实现机器学习的小项目示例(鸢尾花分类)
机器学习·支持向量机·matlab