从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

相关推荐
明志数科6 小时前
具身智能数据供给的分层:分布式采集与入厂采集的工程边界分析
人工智能·机器学习·机器人
差不多的周周6 小时前
《骨架上下文:基于零镜头骨架的动作识别的骨架侧上下文提示学习》论文核心部分详解
学习
傻啦嘿哟7 小时前
Python的默认参数把我坑惨了,原来写[]和写None的区别这么大
开发语言·python·机器学习
Century_Dragon7 小时前
从挂图到VR:汽修专业的一堂新能源原理课可以怎么上~
学习
知识分享小能手8 小时前
C++ 学习教程,从入门到精通,C++对象和类 — 详细知识点总结(10)
开发语言·c++·学习
罗西的思考8 小时前
[Agent Memory / 强化学习] MemPO源码学习笔记 ---(5)--- GRPO
人工智能·算法·机器学习
richard_yuu9 小时前
动态规划:强化学习的「数学基础」,从 MDP 到值迭代
深度学习·神经网络·算法·yolo·机器学习·动态规划
搞科研的小刘选手9 小时前
【计算机方向 | IEEE出版 | 杭州站】第七届机器学习与计算机应用国际学术会议(ICMLCA 2026)
机器学习·学术会议·计算机应用·会议推荐·浙江工业大学
New农民工9 小时前
倒立摆训练秘籍:理解训练参数
学习
L@ncor9 小时前
第五章 基于低代码平台的智能体搭建 · 学习笔记(Coze / Dify / FastGPT / n8n)
笔记·学习·低代码·agent·prompt工程