从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

相关推荐
Khunkin2 小时前
牛顿迭代法:用几何直觉理解方程求根
机器学习
音视频牛哥2 小时前
超清≠清晰:视频系统里的分辨率陷阱与秩序真相
人工智能·机器学习·计算机视觉·音视频·大牛直播sdk·rtsp播放器rtmp播放器·smartmediakit
✎ ﹏梦醒͜ღ҉繁华落℘3 小时前
FreeRTOS学习笔记(应用)-- 各种 信号量的应用场景
笔记·学习
星星火柴9363 小时前
笔记 | C++面向对象高级开发
开发语言·c++·笔记·学习
Coovally AI模型快速验证3 小时前
当视觉语言模型接收到相互矛盾的信息时,它会相信哪个信号?
人工智能·深度学习·算法·机器学习·目标跟踪·语言模型
BeingACoder3 小时前
【SAA】SpringAI Alibaba学习笔记(一):SSE与WS的区别以及如何注入多个AI模型
java·笔记·学习·saa·springai
安全不再安全4 小时前
免杀技巧 - 早鸟注入详细学习笔记
linux·windows·笔记·学习·测试工具·web安全·网络安全
Bony-4 小时前
用于糖尿病视网膜病变图像生成的GAN
人工智能·神经网络·生成对抗网络
BreezeJuvenile4 小时前
外设模块学习(8)——HC-SR04超声波模块(STM32)
stm32·单片机·嵌入式硬件·学习·超声波测距模块·hc-sr04
大千AI助手5 小时前
探索LoSA:动态低秩稀疏自适应——大模型高效微调的新突破
人工智能·神经网络·lora·大模型·llm·大千ai助手·稀疏微调