从0开始学习机器学习--Day13--神经网络如何处理复杂非线性函数

在上一篇文章中,我们浅显地了解了神经网络的架构以及没想神经元的激活项是怎么计算的,下面我们通过一个详细的例子来说明神经网络是怎么计算复杂的非线性函数的输入的。

例子与直觉理解(Examples and intuitions )

假设我们有两个二进制(即只能是0或1)的输入特征,为了简化问题,在坐标系上只标记了两个正样本和两个负样本,如下:

二进制特征量的四个样本

其中,表示当这两个值其中之一恰好等于1时为真,即图中两个圆圈代表,两个叉叉代表。在建立一个神经网络来拟合XOR运算之前,我们先从能够拟合AND(这里的OR和AND和字面意思相同,表达的是逻辑里的或还有且的意思)运算的神经网络来入手。

拟合AND运算的网络计算过程

如图,这个网络在计算时额外添加了一个偏置单元,也就是我们所说的,假设我们直接给输入层的每个输入的系数赋值:-30,20,20。通过穷举的方式,结合sigmoid函数的图像我们可以列出两个输入量的真值表。不难发现,除了两个都取1的时候为真以外,其余三种情况都为假(一般来说,输出为1即是真,而给那个输入变量放负权重取决于表达式里输入特征前是否有NOT。假如表达式里是,则的系数为-20)。这四个值都是神经网络所构建的逻辑函数可能的取值,而这些输出也符合逻辑回归的输出。

总的来说,如果要实现逻辑非运算,我们需要做的就是在预期得到非结果的变量,也就是神经网络输出之前,放一个很大负权重,也就是上面所说的系数,从而改变其取值,再结合sogmoid函数来实现输出0或1。让我们把之前的运算都结合起来,如下:

神经网络解决复杂非线性逻辑问题的过程

如图,我们把放在中间的隐藏层里,为了得到我们想要的结果,在最终输出前通过对不同特征量加负权重改变输出,这就是神经网络针对复杂问题时,通过增加隐藏层来改变输入,从而简化问题来改变结果。简单来说就是,神经网络为了处理复杂问题,会将其分解为一个个问题(这有点像是分类讨论),直到最后得出一个可以成功预测的结果。这可能表现为你在输入一组特征量时,会看到神经网络在后面用了很多个你难以理解的隐藏层来分析问题,像是识别邮件的字体来自于谁写的,也许我们会想到不同字母的弯曲程度和墨水的深浅,但网络可能还会添加类似字母跳动、由近及远变化的隐藏层。

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

相关推荐
芊寻(嵌入式)2 分钟前
C转C++学习笔记--基础知识摘录总结
开发语言·c++·笔记·学习
孙同学要努力37 分钟前
《深度学习》——深度学习基础知识(全连接神经网络)
人工智能·深度学习·神经网络
hong16168838 分钟前
跨模态对齐与跨领域学习
学习
AI街潜水的八角1 小时前
基于C++的决策树C4.5机器学习算法(不调包)
c++·算法·决策树·机器学习
喵~来学编程啦1 小时前
【论文精读】LPT: Long-tailed prompt tuning for image classification
人工智能·深度学习·机器学习·计算机视觉·论文笔记
阿伟来咯~1 小时前
记录学习react的一些内容
javascript·学习·react.js
Suckerbin2 小时前
Hms?: 1渗透测试
学习·安全·网络安全
水豚AI课代表2 小时前
分析报告、调研报告、工作方案等的提示词
大数据·人工智能·学习·chatgpt·aigc
聪明的墨菲特i2 小时前
Python爬虫学习
爬虫·python·学习
Diamond技术流2 小时前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos