神经网络

神经网络

来源:UFLDL教程

本文为神经网络综合系列的第一篇,通过学习,你也将实现多个功能学习/深度学习算法,能看到它们为你工作,并学习如何应用/适应这些想法到新问题上。文章内容是假定您有基本的机器学习基础之上进行的(特别是熟悉的监督学习,逻辑回归,梯度下降的想法),如果你不熟悉这些想法,我们建议你去这里机器学习课程http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course= Machine Learning,并先完成第II,III,IV章(到逻辑回归)。

目录

  1. 关键词
  2. 概述
  3. 神经网络模型

1. 关键词

neural networks 神经网络

activation function 激活函数

hyperbolic tangent 双曲正切函数

bias units 偏置项

activation 激活值

forward propagation 前向传播

feedforward neural network 前馈神经网络

2. 概述

以监督学习为例,假设我们有训练样本集(x[^i], y[^i]),那么神经网络算法能够提供一种复杂且非线性的假设模型h[W,b](x),他具有参数W和b,可以以此参数来拟合我们的数据。

为了描述神经网络,我们先从最简单的神经网络讲起,这个神经网络仅由一个“神经元”构成,以下即是这个“神经元”的图示:

这个“神经元”是一个以x[1], x[2], x[3]以及截距偏置项+1为输入值的运算单元,输出为:

其中函数:f:R----> R^称之为“激活函数”。本文中我选择的是sigmoid作为激活函数f(.),如下所示。

可以看出,这个单一“神经元”的输入- 输出映射关系其实就是一个逻辑回归(logistic regression)。

虽然本文采用sigmoid函数,但你也可以选择双曲正切函数(tanh),如下所示。

一下分别是sigmoid 和tanh函数的图像。

注意,tanh函数是sigmoid函数的一种变体,取值范围为[-1, 1]。

有一个等式我们以后会经常用到:

若f(z) = 1/(1 + exp(-z))

则f(z)导数为:f(z) * (1- f(z))

若f(z) = tanh(z)

则f(z)导数为1 - (f(z))^2

3. 神经网络模型

所谓神经网络就是将许多个单一“神经元”联结在一起,这样,一个“神经元”的输出就可以是另一个“神经元”的输入。例如,下图就是一个简单的神经网络:

我们使用圆圈来表示神经网络的输入,标上“+1 ”的圆圈被称为偏置节点,也就是截距项。神经网络最左边的一层叫做输入层,最右的一层叫做输出层(本例中,输出层只有一个节点)。中间所有节点组成的一层叫做隐藏层,因为我们不能在训练样本集中观测到它们的值。同时可以看到,以上神经网络的例子中有3个输入单元(偏置单元不计在内),3个隐藏单元及一个输出单元。

使用nl表示网络的层数,假设nl = 3,将第l层标记为L[l], 所以L[1]是输入层,L[2].....L[nl-1]是隐藏层,L[nl]是输出层。参数为(W, b) = {W[^1], b[^1], W[^2], b[^2]},其中W[^l][ij]是l层第j个单元与第l+1层单元之间的连接参数, b[^l][i]是第l+1层第i个单元的偏置项。因此在本例中,W[^1] <<R[^(3x3)],即3x3的矩阵,W[^2] << R[^(1x3)]。同时,使用s[l]表示第l层的节点数。

使用a[^l][i]表示第l层第i个单元的激活值,当l = 1 时, a[^1][i] = x[i],也就是第i个输入值。对于给定采纳数集合W,b,我们的神经网络就乐意按照函数h[W,b](x)来计算输出结果。具体的推导过程如下所示:

我们使用Z[^l][i]表示第l层第i个单元输入加权和(包括偏置单元),比如。

这样我们就可以得到一种更简洁的表示法。这里我们将激活函数f(.) 扩展为用向量(分量的形式)来表示,即

那么,上面的等式可以更简洁地表示为:

我们将上面的计算步骤叫作前向传播。回想一下,之前我们用a[^1] = x 表示输入层的激活值,那么给定第l层的激活值 后,第l+1 层的激活值a[^(l+1)] 就可以按照下面步骤计算得到:

将参数矩阵化,使用矩阵-向量运算方式,我们就可以利用线性代数的优势对神经网络进行快速求解。

目前为止,我们讨论了一种神经网络,我们也可以构建另一种结构的神经网络(这里结构指的是神经元之间的联接模式),也就是包含多个隐藏层的神经网络。最常见的一个例子是nl 层的神经网络,第1 层是输入层,第nl 层是输出层,中间的每个层l 与层l+1 紧密相联。这种模式下,要计算神经网络的输出结果,我们可以按照之前描述的等式,按部就班,进行前向传播,逐一计算第L2 层的所有激活值,然后是第L3 层的激活值,以此类推,直到第L[nl] 层。这是一个前馈神经网络的例子,因为这种联接图没有闭环或回路。

神经网络也可以有多个输出单元。比如,下面的神经网络有两层隐藏层: L2及L3 ,输出层L4有两个输出单元。

要求解这样的神经网络,需要样本集 (x[^i], y[^i]),其中y[^i] << R[^2] 。如果你想预测的输出是多个的,那这种神经网络很适用。(比如,在医疗诊断应用中,患者的体征指标就可以作为向量的输入值,而不同的输出值 y[i]可以表示不同的疾病存在与否。)

原文发布于微信公众号 - 机器学习算法与Python学习(guodongwei1991)

原文发表时间:2016-12-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CreateAMind

RCNN- 将CNN引入目标检测的开山之作

https://www.zhihu.com/question/35887527/answer/147832196

1402
来自专栏weixuqin 的专栏

深度学习之 TensorFlow(四):卷积神经网络

3667
来自专栏人工智能

课后作业(二):如何用一个只有一层隐藏层的神经网络分类Planar data

来源:sandipanweb 编译:Bot 编者按:之前,论智曾在TOP 10:初学者需要掌握的10大机器学习(ML)算法介绍了一些基础算法及其思路,为了与该帖...

1956
来自专栏人工智能

第四课反向传播算法与神经网络(一)

Stanford深度学习课程第四课反向传播算法与神经网络(一) 预备知识 我们不直接介绍课程内容,首先介绍一些预备知识,这样可以更好的理解课程内容。下面我们介绍...

2086
来自专栏应兆康的专栏

机器学习概念:梯度下降

机器学习中大部分都是优化问题,大多数的优化问题都可以使用梯度下降/上升法处理,所以,搞清楚梯度算法就非常重要

5909
来自专栏深度学习计算机视觉

BP神经网络总结笔记

概念背景(来自百度百科) BP神经网络的代表者是D.Rumelhart和J.McCelland,“反向传播(backpropagation)”一词的使用出现在1...

2823
来自专栏机器学习算法原理与实践

梯度下降(Gradient Descent)小结

    在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。这里就...

741
来自专栏weixuqin 的专栏

深度学习之 TensorFlow(四):卷积神经网络

1523
来自专栏码农笔录

BP神经网络基础算法

1765
来自专栏数说工作室

【分类战车SVM】第三话:最大间隔分类器

分类战车SVM (第三话:最大间隔分类器) 查看本《分类战车SVM》系列的内容: 第一话:开题话 第二话:线性分类 第三话:最大间隔分类器 第四话:拉格朗日对偶...

42510

扫码关注云+社区

领取腾讯云代金券