frontpage做网站怎么样,磁力屋torrentkitty,服装网站建设论文范文,阳江招聘网官网有关深度前馈网络的部分知识#xff0c;我们已经在吴恩达的机器学习课程中有过了解了#xff0c;本章主要是对《深度学习》花书中第六章#xff1a;深度前馈网络的总结笔记。我希望你在看到这一章的时候#xff0c;能回忆起机器学习课程中的一些环节或者细节#xff0c;这…有关深度前馈网络的部分知识我们已经在吴恩达的机器学习课程中有过了解了本章主要是对《深度学习》花书中第六章深度前馈网络的总结笔记。我希望你在看到这一章的时候能回忆起机器学习课程中的一些环节或者细节这对理解本文很有帮助。
参考笔记 前馈神经网络初探——深度学习花书第六章一 神经网络损失函数、输出层、隐藏层详解——深度学习第六章二 反向传播算法——深度学习第六章三 (逮住大佬的文章使劲薅 文章目录认识深度前馈网络偏爱线性模型实例学习XOR认识深度前馈网络 深度前馈网络也叫前馈神经网络或者多层感知机这是一种典型的深度学习模型其目的是为了近似某个函数f∗f^*f∗,函数f∗f^*f∗被我们称为近似原函数fff的一个拟合函数。我们想要得到这个函数f∗(x)f^*(x)f∗(x),使得我们输入xxx能够得到近似结果yf∗(x)≈f(x)yf^*(x)\approx f(x)yf∗(x)≈f(x)。整个神经网络相当于一个映射yf(x;θ)yf(x;\theta)yf(x;θ)
像这样信息流为xxx过定义fff的中间计算过程最后达到输出yyy,在模型的输出和模型本身没有反馈连接即输出结果作为下次输入存在反馈连接的被我们称为循环神经网络。
假设一个神经网络函数被描述为f(x)f(3)(f(2)(f1(x)))f(x)f^{(3)}(f^{(2)}(f^{1}(x)))f(x)f(3)(f(2)(f1(x)))其中f(1)f^{(1)}f(1)被称为第一层f(2)f^{(2)}f(2)被称为第二层以此类推。链的全长称为模型的深度前馈网络的最后一层被称为输出层第一层被称为输入层。整个神经网络的目的是想要使yyy能够匹配f∗(x)f^*(x)f∗(x)的值但是训练数据并不能告诉我们其他层该怎么做而应该让学习算法来决定如何使用中间层来很好地近似f∗(X)f^*(X)f∗(X),由于训练数据并未给出中间层所需的输出因此我们把中间的那些层称为隐藏层。
神经网络中的每个隐藏层通常都是向量值这些隐藏层的维度决定了模型的宽度。我们最好把每层隐藏层想象成许多并行处理的单元每个单元表示一个处理x个向量成为一个标量的函数。每个单元类似于神经元它接受来自其他多个单元的输入并计算它自己的激活值每个神经元进行了矢量到标量的映射操作这一操作又被称作激活函数activation function而每一层是不同的神经元并行运算的综合。
偏爱线性模型
建立深度前馈网络的一个考虑是从线性模型开始并设法克服它的局限性例如线性回归和逻辑回归它们无论是通过闭解形式还是使用凸优化都能高效且可靠地拟合。但是线性模型也有明显的缺陷那就是模型的能力被局限于线性函数它无法理解任何两个输入变量间的相互作用。
为了拓展线性模型来表示x的非线性函数我们可以不把线性模型应用于x本身而是用于一个变换后的输入ϕ(x)\phi(x)ϕ(x)上ϕ\phiϕ指的是一个非线性的变换这种方法将线性模型拓展为非线性模型并利用线性模型的性质来解决。如果你还记得我们讲过的核函数我们也可以隐含地使用ϕ\phiϕ映射的非线性学习算法将一个非线性问题转化为一个线性问题再解决。
ϕ\phiϕ可以简单地理解为对原函数f(x)f(x)f(x)或者对x内所隐含特征的映射。
对于如何选取映射 ϕ\phiϕ有如下几种思路选取一个比较通用的 ϕ\phiϕ例如核技巧中的RBF kernel也称作Gaussian kernel如果ϕ(x)\phi(x)ϕ(x)的维度足够高我们总能够使其匹配训练集但很难推广到测试集。因为这种模型只是假设了局域变化不大的前提而并没有包含任何有价值的先验信息。人工选取合适的 ϕ\phiϕ实际上这是在深度学习流行之前的主流方法但是这需要大量的相关经验与人力资源而且不同领域间的知识很难迁移。深度学习的策略是利用神经网络学习合适的用隐藏层代表的映射ϕ\phiϕ即模拟yf(x;θ,w)ϕ(x;θ)Twyf(x;\theta,w)\phi(x;\theta)^Twyf(x;θ,w)ϕ(x;θ)Tw,其中θ\thetaθ是ϕ\phiϕ的模拟参数我们需要从一大类函数中进行学习得到以及用于将ϕ\phiϕ映射到所需的输出的参数www。这种方法可以兼具方法一二的优点如果我们想要得到高度通用的ϕ\phiϕ只需使用一个非常广泛的函数族函数集合)ϕ(x;θ)\phi(x;\theta)ϕ(x;θ)来训练参数θ\thetaθ 我们也可以人为的设置表现优异的函数族ϕ(x;θ)\phi(x;\theta)ϕ(x;θ)重新训练与第二种方法相比优点在于我们只需找到一个比较合适的函数族而不需要知道确切的函数。
第三种方法可以对应我们之前学到的预训练可以在不同功能的同一模型内迁移参数并微调。并且这个方法不仅适用于深度前馈网络甚至可适用所有种类的深度学习模型指的是同一种模型内迁移参数都适用。
实例学习XOR
XOR指的是异或函数对于两个二进制输入x1,x2x_1,x_2x1,x2即输入结果只有0和1若有且仅有一个输入为1则输出1反之其余情况都输出0如下图所示
由于它的输出只有这四个因此我们要用这四个样本来训练我们的网络。
很明显我们无法对当前的向量空间进行线性分割使得两种的输出结果被分别分割到线性函数的两侧。
当然书上给出了一个证明过程:假设线性回归模型f(x;w,b)xTwbf(x;w,b)x^Twbf(x;w,b)xTwb 其MSE(均方误差)代价函数为:J(θ)14∑x∈X(f∗(x)−f(x;θ))2J(\theta)\frac{1}{4}\displaystyle\sum_{x \in \Bbb X}(f^*(x)-f(x;\theta))^2J(θ)41x∈X∑(f∗(x)−f(x;θ))2线性回归的代价函数基本都是均方误差
运用梯度下降或者正规方程我们找到使得min(MSE)min(MSE)min(MSE)的参数θ或者说(w,b)\theta或者说(w,b)θ或者说(w,b)我们得到w0w0w0,b12b\frac{1}{2}b21,意味着f(x;w,b)0.5f(x;w,b)0.5f(x;w,b)0.5在任意点都是这个输出和我们的结果不能说没有关系只能说八竿子打不到一块。也就证明了一个我们一眼就看出来的结论线性回归不适合拟合这个模型。
这种时候想想核技巧会怎么做其中一个方法就是使用一个模型将其映射到一个新的特征空间在这个特征空间内我们可以用线性模型来解决。
我们引入一个如下图所示的简单的具有一层隐藏层的前馈网络模型 注意图中两种方式表示是等价的左图是具体画出每个节点而右图是简化为层。并且用WwW \ wWw来表示了不同层次间的映射关系。
这个简单的神经网络甚至简单到只有两层xxx层不在神经网络内它代表的是输入特征hhh层是神经网络的第一层隐藏层也是输入层yyy层是第二层但不是隐藏层是输出层。
在上述模型中包含了两个函数hf(1)(x;W,c)hf^{(1)}(x;W,c)hf(1)(x;W,c)和yf(2)(h;w,b)yf^{(2)}(h;w,b)yf(2)(h;w,b)完整的模型是f(x:W,c,w,b)f(2)(f(1)(x))f(x:W,c,w,b)f^{(2)}(f^{(1)}(x))f(x:W,c,w,b)f(2)(f(1)(x))如果详细地展开整个映射 h1W11∗x1W21∗x2b11h1 W_{11}*x1W_{21}*x2b_{11} h1W11∗x1W21∗x2b11 h2W12∗x1W22∗x2b12h2 W_{12}*x1W_{22}*x2b_{12} h2W12∗x1W22∗x2b12 yw11∗x1w21∗x2b21yw_{11}*x1w_{21}*x2b_{21}yw11∗x1w21∗x2b21 其中W11W_{11}W11代表第1层从x1,x2→h1x_1,x_2 \to h_1x1,x2→h1的参数WWW,b21b_{21}b21代表第2层第1个神经元的常数参数以此类推。
好处之一就是我们现在构建这个模型不用知道具体函数只需要写出函数族即可所以我们可以简单地把神经网络的层次先建立起来。现在让我们思考应该选择哪个函数来表示f(1)f^{(1)}f(1)?似乎线性函数可以遗憾的是线性函数的线性函数也就是F(x)f(f(x))F(x)f(f(x))F(x)f(f(x))若f(x)f(x)f(x)是线性函数,则F(x)F(x)F(x)也是线性函数证明略自己代入可证。因此我们肯定不能选择线性函数了。
当然我们学习过神经网络了知道现在我们应该采用一些非线性的激活函数来实现这个目的现在我们需要一个偏置参数WTW^TWT来描述从x⃗→h⃗\vec x\to \vec hx→h的仿射变换我们需要一整个向量的偏置参数因此激活函数ggg通常需要选择对每个元素xix_ixi分别起作用的函数从而有hig(xTW;ici)h_ig(x^TW;ic_i)hig(xTW;ici)。在现代神经网络中我们默认的推荐是ReLu函数g(z)max{0,z}g(z)max\{{0,z}\}g(z)max{0,z} (整流线性激活函数ReLu非常接近线性本质上它是具有两个线性部分的分段线性函数ReLu几乎是线性的因此保留了线性模型能够泛化良好的属性。就像计算机一样我们可以从0和1构建一个复杂的系统因此我们也可以通过整流线性函数构建一个万能函数近似器
因此我们带入f(1)g(z)f^{(1)}g(z)f(1)g(z)得到完整模型f(x;W,c,w,b)wTmax{0,WTxc}bf(x;W,c,w,b)w^T\space max\{{0,W^Txc}\}bf(x;W,c,w,b)wT max{0,WTxc}b
那么我们开始训练数据了按照真值表的输出我们需要使得模型拟合下面的训练样本 那么我们可以找到一个解 此时b0将训练集带入验证 在第一层中我们用输入矩阵 XXX*权重矩阵WWW,得到XW[00111122]XW\begin{bmatrix} 0 0 \\ 1 1 \\ 1 1 \\ 2 2 \\ \end{bmatrix}XW01120112,再加上偏置向量ccc得到XWcT[0−1101021]XWc^T\begin{bmatrix} 0 -1 \\ 1 0 \\ 1 0 \\ 2 1 \\ \end{bmatrix}XWcT0112−1001这是由输入层到ReLu的映射接下来我们用ReLu对每个样本进行处理得到隐藏层的输出值 我们说这是非线性模型到线性模型的拓展这个输出值从原空间通过映射ϕ\phiϕ到隐藏层的特征空间hhh在特征空间上我们可以用线性模型来解决。
(左图是原空间右图就是特征空间hhh,与原空间相比hhh将x[1,0]T和x[0,1]Tx[1,0]^T和x[0,1]^Tx[1,0]T和x[0,1]T这两个点映射到了h[1,0]Th[1,0]^Th[1,0]T使得原来无法用线性模型拓展的原空间为了可以可以使用线性模型的特征空间) 最后乘以权重向量w[1−2]w\begin{bmatrix} 1 \\ -2 \\ \end{bmatrix}w[1−2],(XWcT)wb[0110](XWc^T)wb\begin{bmatrix} 0 \\ 1 \\ 1 \\ 0 \\ \end{bmatrix}(XWcT)wb0110
这个例子中我们用简单的神经网络并找到合适的解来模拟XOR操作实际中问题要复杂得多而我们不能这么容易的猜到合适的解这时候我们就需要利用梯度下降算法来逼近合适的解。下一篇继续总结利用梯度下降算法的前馈神经网络模型的基本组成包含模型的损失函数输出层函数隐藏层函数以及整体架构的选择。