从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

相关推荐
墨楠。22 分钟前
数据结构学习记录-树和二叉树
数据结构·学习·算法
云天徽上38 分钟前
【数据可视化】全国星巴克门店可视化
人工智能·机器学习·信息可视化·数据挖掘·数据分析
文城52143 分钟前
Mysql存储过程(学习自用)
数据库·学习·mysql
我们的五年1 小时前
【C语言学习】:C语言补充:转义字符,<<,>>操作符,IDE
c语言·开发语言·后端·学习
Icoolkj1 小时前
微服务学习-Nacos 注册中心实战
linux·学习·微服务
watersink2 小时前
面试题库笔记
大数据·人工智能·机器学习
siy23332 小时前
【c语言日寄】Vs调试——新手向
c语言·开发语言·学习·算法
无涯学徒19982 小时前
R6学习打卡
学习
黄交大彭于晏2 小时前
C语言常用知识结构深入学习
c语言·学习·word
一只码代码的章鱼2 小时前
机器学习2 (笔记)(朴素贝叶斯,集成学习,KNN和matlab运用)
人工智能·机器学习