神经网络在做什么

系列文章目录

神经网络在做什么

文章目录


前言

跟着苏神学习AI

正文

从数学的角度去探索:神经网络和深度学习:

机器学习两大方向:回归和拟合。

但是我们针对回归任务也需要进行离散化数据,因此一定程度上也可以理解为拟合任务。

那么模型是什么呢,x->f(x)->y。对于一个输入x,我们希望找到一个方法,使它输出的结果是y,且y不断逼近或者就是我们需要的结果。

那么其实模型就是两个任务,一个是如何得到x,一个是如何得到f函数。

为什么说得到x是一个任务呢,因为我们是需要对真实世界进行建模的,真实世界的数据是嘈杂的,混乱的,因此我们也才会专门有数据筛选数据处理的部分。当然这是一个简单的想法。如果从数学的角度去想,f(x)中的x其实不应该是整个数据,而应该是对输出有信息价值的数据,或者我们称为数据的特征。因此,如何让我们的网络能够准确的捕捉到我们的信息特征呢,一直是一个重大的问题。在数据层面,数据筛选,数据过滤,数据处理,数据强化(数据筛选的过滤怎么做,数据处理里的高低维数据,离散线性数据,真实世界的数学建模,分布不均衡数据的处理,数据强化的种种拼接,分辨率的高低)。在模型方面,cnn,rnn,lstm,attention机制,维度由小到大的MLP层。在训练思路方面,正负样本的对抗,强化学习的反馈。等等这些,其实都是在做一个任务,就是提取有效的特征。

那么第二个任务就是如何得到恰当的f函数。我们都知道,实际上我们使用神经网络去想要解决的问题,很多都不是简单的线性问题和非线性问题,那么我们如何去解决这个问题呢?将所有的线性非线性函数暴力组合?这是不太现实的。那么我们接下来就想到,一般的非线性函数都能够使用泰勒函数去逼近,那么,我们能否用高次多项式来作为我们的f函数呢? 这是一个很有意思的方向,于是大家去做了,但是会发现一个问题,那就是对于训练数据我们的模型能拟合的很好,但是对于测试或者验证数据会非常的差,也就是过拟合问题。这里一般是两种情况,第一种呢,是因为我们的高次多项式随着次数的增加,系数也越来越多,因此自由度很高,因此能够很轻易的拟合我们的训练数据,那么自然的,当数据内存在噪音呢?是的,我们的模型会拟合掉所有的数据包括噪音,因此理所当然会出现过拟合的情况。第二种呢,其实也是因为拟合所有数据的原因,叫做稀疏数据或者非正常数据内的动荡。简单来说,如果两个数据在空间上相隔的很远,那么为了拟合这两个数据,我们的函数会强硬的经过这两个数据,如果和先前或者后面的数据分布差距过大,或者出现过多的这种情况,那么就会看到我们的模型曲线,上下动荡幅度巨大。

对于这个问题,神经网络的提出者说可以使用复合函数来拟合,并且尝试使用最简单的符合函数,一个线性函数,一个最简单的二元非线性函数:

但是简单的二元非线性我们看出来是一个无法求导的,因此我们往往会选择一个可以求导的非线性简单函数,例如relu,sigmoid,softmax等等。

那么,我们首先需要一个东西叫做无限逼近原理,也就是说,随着我们网络层数的堆叠,也就是线性和非线性函数的越来越多,我们神经网络的g(x)能够无限逼近真实的f(x)。

那么是为什么呢,具体的证明可能过于复杂。我在这里举一个简单的证明,假设我们的f(x)函数是一个结果只能是1或者0的二分类函数。那么我们知道我们的sigmoid的作用是让函数在某一个区间无限接近1,某个区间无限接近0。那么假定我们的g(x)现在是g(wx+b)【因为激活函数word不知道怎么打,假定g就是我们的激活函数是sigmoid,内部是一个线性函数】那么通过调整w和b的值,我们可以随意调整我们的sigmoid在某个区间内接近1,某个区间接近0,而且这个区间可以无限小。那么假定f(1)是1,f(2)是0,那我们就可以让我们的g(wx+b)在x=1的地方为1,x=2的地方为0。而对于x的其他区间,每两个数我们就定义一个g,那么无数的g组合起来,毫无疑问能够近乎百分百拟合我们的f(x),当然实际情况中,我们肯定会让g的数量尽可能的少,一方面是防止过拟合,另一方面也是节省训练资源。

总结

开始学习day1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值