学习 tensorflow,caffe 等深度学习结构前,需求先了解一些根底概念。本文以笔记的方法记录了一个零根底的小白需求先了解的一些根底概念。
人工智能,机器学习和深度学习的联系
人工智能(Artificial Intelligence)——为机器赋予人的智能
强人工智能(General AI):无所不能的机器,它有着咱们一切的感知(乃至比人更多),咱们一切的理性,可以像咱们相同考虑
弱人工智能(Narrow AI):弱人工智能是可以与人相同,乃至比人更好地履行特定使命的技能。例如,Pinterest 上的图画分类;或许 Facebook 的人脸辨认。
强人工智能是愿景,弱人工智能是现在能完成的。
机器学习—— 一种完成人工智能的办法
机器学习最根本的做法,是运用算法来解析数据、从中学习,然后对实在国际中的事情做出决议计划和猜测。
深度学习——一种完成机器学习的技能
机器学习可以经过神经网络来完成。可以将深度学习简略了解为,便是运用深度架构(比方深度神经网络)的机器学习办法。现在深度架构大部分时分便是指深度神经网络。
神经网络组成
一个神经网络由许多神经元组成,每个圆圈是一个神经元,每条线表明神经元之间的衔接。x 表明的输入数据,y 表明的是输出数据,w 表明每层衔接的权重。w 也便是咱们结构完神经网络之后需求确认的。
最左面的叫做输入层,这层担任承受输入数据。
最右边的叫做输出层,咱们可以从这层获取神经网络输出数据
输入层和输出层之间叫做躲藏层。躲藏层层数不定,简略的神经网络或许是 2-3 层,杂乱的也或许成百上千层,躲藏层较多的就叫做深度神经网络。
深层网络比浅层网络的表达能力更强,可以处理更多的数据。可是深度网络的练习愈加杂乱。需求许多的数据,许多的技巧才干练习好一个深层网络。
问题:假定计算速度足够快,是不是深度网络越深越好?
不是。深度网络越深,对架构和算法的要求就越高。在超越架构和算法的瓶颈后,再添加深度也是白费。
神经元(感知器)
神经网络由一个个的神经元构成,而一个神经元也由三部分组成。
输入权值 每个输入会对应一个权值 w,一起还会有一个偏置值 b。也便是图中的 w0。练习神经网络的进程,其实便是确认权值 w 的进程。
激活函数 经过权值运算之后还会阅历激活函数再输出。比方咱们可以用阶跃函数 f 来表明激活函数。
输出 终究的输出,感知器的输出可以用这个公式来表明
神经元可以拟合恣意的线性函数,如最简略拟合 and 函数。
and 函数真值表如上图所示。取 w1 = 0.5;w2 = 0.5 b = -0.8。激活函数取上面示例的阶跃函数 f 表明。可以验证此刻神经元能表明 and 函数。
如输入榜首行,x1 = 0,x2 = 0 时,可以得到
y 为 0,这便是真值表的榜首行。
在数学意义上,可以这样了解 and 函数的神经元。它表明了一个线性分类问题,它就像是一条直线把分类 0(false,红叉)和分类 1(true,绿点)分隔
而实际上,神经元在数学上可以了解为一个数据切割问题。神经元是将神经网络转换成数学识题的要害。比方需求练习神经网络做一个分类器,那么在数学上可以将输入的参数(x1,x2…,xn)了解为 m 维坐标系(设 x 是 m 元向量)上的 n 个点,而每个神经元则可以了解为一个个拟合函数。取 m 为 2,放在最简略的二维坐标系里边进行了解。
此刻输入参数对应的是下图中的黑点,每个神经元便是黑线(因为激励函数的存在,不一定像下图相同是线性的,它可以是恣意的形状)。神经网络由一个个神经元组成,这些神经元表明的拟合函数彼此交织就形成了各式各样的区域。鄙人图中可以直观的看到,此刻分类问题便是一个数学的问题,输入参数落在 A 区域,那么就以为他是分类 1,落在 B 区域,则以为他是分类 2。顺次类推,咱们便建立了神经网络分类器在数学上的表现意义。
激活函数
事实上,一个神经元不能拟合异或运算。鄙人图中可以直观的看到,你无法直接用一条直线将分类 0 和分类 1 分离隔。
此刻可以凭借激活函数来做切割。激活函数挑选阀值函数,也便是当输入大于某个值时输出 1(激活),小于等于那个值则输出 0(没有激活)。
拟合异或函数的神经网络如图所示:
图中神经网络分红三层。在第二层中,假如输入大于 1.5 则输出 1,不然 0;第三层,假如输入大于 0.5,则输出 1,不然 0.
榜首层到第二层(阀值 1.5):
第二层到第三层(阀值 0.5):
可以看到终究成果与异或成果符合。
其实,这儿放在数学上了解表现的是一个升维思维。放在二维坐标中无法切割的点,可以放在三维坐标中切割。上面的神经网络可以了解为只要终究一层,三个参数的神经元。激活函数是用来结构第三个参数的方法。这样等同于将三个点放在三维坐标系中做数据切割。相当于在二维中无法处理中的问题升维到三维中处理。
深度学习进程
结构神经网络
确认学习方针
学习
怎么进行深度学习,进程根本都可以分为这三步来做。用一个简略的比如来阐明。如图,假定咱们需求经过深度学习来辨认手写图片对应的数字。
1.结构神经网络。这儿可以选用最简略的全衔接神经网络,也可以选用卷积神经网络。一起确认神经元的激励函数,神经网络的层数等。根底概念篇不做过多介绍
2.确认学习方针。这儿简略假定咱们一切输入的都是手写的数字图片。那么这儿就有 10 个输出,别离对应 0~9 的数字的份额。咱们用 [y0,y1,…y9]表明,每个 y 值代表这张图或许对应该数字的概率(y0 表明这张图是数字 0 的概率)。关于上图中榜首个输入图片,在练习进程中,咱们知道榜首张图片输出应该是数字 5。所以咱们期望输出是 [0,0,0,0,0,1,0,0,0,0]。可是实际上,咱们的模型不是完美的,必定会有差错,咱们得到的成果或许是 [0,0,0.1,0,0,0.88,0,0,0,0.02]。那么就会有个练习得到的成果和期望成果的差错。
这时分咱们的学习方针也便是期望这个差错可以最小。差错用 L 来表明,学习方针便是找到权值 w,使得 L 最小。当然,这儿涉及到咱们需求用一个公式来表达这个差错 L,这个公式选取也很有学识,不同的公式终究在学习进程时收敛速度是不相同的,经过练习模型得到的权值 w 也是不相同的。这儿先不多介绍。
3.学习。假定咱们神经模型确认下来的权值 w 与 L 的联系如图所示(这儿咱们考虑最简略的二维坐标下的状况,原理是相通的,推行到多元坐标也是适用的)。因为数学模型的杂乱,这儿找最小值 L 的进程其实是找部分最小值的进程。