开始学习神经网络(Neural Network)

已有线性与逻辑回归,为什么需要用到NN

实际的应用中,需要根据很多特征进行训练分类器,当今有两个特征下,可以通过下图表述:

然而还有太多的特征需要考虑,假设这里有100个特征,包含他们所有的相关项后可能会有5000个,这种计算量很显然是非常大的,当然你可以仅保存\(x_1^2、x_2^2....X_{100}^2\),此时仅100个,但此时拟合结果很有可能出现underfitting。

NN模型表示

我们来看看我们如何使用神经网络来表示一个假设函数。简单地,神经元基本上是计算单位,其将输入(树突)作为被输送到输出(轴突)的电输入(称为“尖峰”)。 在我们的模型中,我们的树突像输入特征\(x_1、x_2...x_n\),输出是我们假设函数的结果。 在这个模型中,我们的\(x_0\)输入节点有时被称为“偏置单元”。 它总是等于1。

这里我们依然利用\(\frac{1}{1+e^{-\theta^Tx}}\)作为我们的逻辑函数(logistic function),有时称为s形激励函数(sigmoid activation function)。这里的参数Theta也被称为权重“Weights”

我们的输入节点(第1层)也称为“输入层”,进入另一个节点(第2层),最终输出称为“输出层”的假设函数。在输入层与输出层之间的部分我们一般称为隐藏层。在这个例子中,我们标注这些中间层或“隐藏”层节点\(a_0^2...a_n^2\)并将其称为“激励单元”。

\(a_j^{(j)}\)称为第j层中的第i个单元,矩阵\(\Theta^{(j)}\)描述的是第j层到第j+1层权重。下图反应了仅包含一个隐藏层的情况:

每个节点的”激励“(activation)按照一下计算:

这就是说,我们使用3×4的参数矩阵来计算激活节点。 我们将每行参数应用到我们的输入,以获得一个激活节点的值。 我们的假设输出是应用于激活节点的值之和的逻辑函数,它们已经乘以包含第二层节点权重的另一个参数矩阵\(\Theta^{(2)}\)。

对于权重矩阵的维度:

如果网络在层j + 1中有和\(s_{j+1}\)单元,层j中具有\(s_j\)单元,则\(\Theta^{(j)}\)将为尺寸\(s_{j+1}\)×(\(s_j\) + 1)。

如:在第一层有2个输入单元,第二层有4个激励点,那么权重参数\(\Theta^{(1)}\)的维度为4×(2+1)=4×3。

总结如下图所示:

接下来,我们将对上述函数进行向量化实现。 我们要定义一个包含我们g函数内的参数的新变量\(z_k^{(j)}\)。 在我们前面的例子中,如果我们用变量z代替所有参数,我们将得到:

换句话说,对于层数J=2中的第k个节点,变量z有:

\(z_k^{(2)}=\Theta_{k,0}^{(1)}x_0+\Theta_{k,1}^{(1)}x_1+...\Theta_{k,n}^{(1)}x_n\)

用向量表示为:

将输入x设置为\(a^{(1)}\),有以下等式:

\(z^{(j)}=\Theta^{(j-1)}a^{(j-1)}\)

最后有:\(h_\Theta(x)=a^{(j+1)}=g(z^(j+1))\)

请注意,在最后一步中,在层j和层j + 1之间,我们的做法与我们在逻辑回归中完全一样。 在神经网络中添加所有这些中间层使我们能够更优雅地产生有趣和更复杂的非线性假设。

NN-Neural Network的更多相关文章

  1. Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1

    3.Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1 http://blog.csdn.net/sunbow0 ...

  2. Neural Network Toolbox使用笔记1:数据拟合

    http://blog.csdn.net/ljp1919/article/details/42556261 Neural Network Toolbox为各种复杂的非线性系统的建模提供多种函数和应用程 ...

  3. How to implement a neural network

    神经网络的实践笔记 link: http://peterroelants.github.io/posts/neural_network_implementation_part01/ 1. 生成训练数据 ...

  4. Recurrent Neural Network(循环神经网络)

    Reference:   Alex Graves的[Supervised Sequence Labelling with RecurrentNeural Networks] Alex是RNN最著名变种 ...

  5. Deep Learning: Assuming a deep neural network is properly regulated, can adding more layers actually make the performance degrade?

    Deep Learning: Assuming a deep neural network is properly regulated, can adding more layers actually ...

  6. Convolutional Neural Network in TensorFlow

    翻译自Build a Convolutional Neural Network using Estimators TensorFlow的layer模块提供了一个轻松构建神经网络的高端API,它提供了创 ...

  7. 【论文阅读】Sequence to Sequence Learning with Neural Network

    Sequence to Sequence Learning with NN <基于神经网络的序列到序列学习>原文google scholar下载. @author: Ilya Sutske ...

  8. Recurrent Neural Network[survey]

    0.引言 我们发现传统的(如前向网络等)非循环的NN都是假设样本之间无依赖关系(至少时间和顺序上是无依赖关系),而许多学习任务却都涉及到处理序列数据,如image captioning,speech ...

  9. 【NLP】Recurrent Neural Network and Language Models

    0. Overview What is language models? A time series prediction problem. It assigns a probility to a s ...

  10. Bilinear CNN与 Randomly Wired Neural Network

    最近主要学习了两篇论文以及相关的代码. 1.Bilinear CNN 这篇论文主要是在细粒度分类上应用的,在全连接层之前,在所有的卷积计算完成之后,进行的Bilinear计算,关键的代码如下: def ...

随机推荐

  1. ASP.NET Cookie和Session

    Cookie和Session C#在服务器,JS在客户端 客户端验证不能代替服务端验证 Http HTTP属于应用层,HTTP 协议一共有五大特点:1.支持客户/服务器模式;2.简单快速;3.灵活;4 ...

  2. Eclipse 如何添加Window Builder插件?

    http://www.eclipse.org/windowbuilder/download.php 找到对应版本的window builder 如果不知道版本的话,可以在你的Eclipse-help- ...

  3. 发送验证码(××s后重新发送)

    html: <input class="tel" type="text" name="tel" placeholder="手 ...

  4. java之对数组排序

    一.在运行时输入数组 import java.util.*; //也可以写成  import java.util.Scanner; public class px { public static vo ...

  5. js-获取两个字符串日期的相隔周

    例如说"2017-04-01 23:00:00"是周六, "2017-04-28 23:00:00"是周五,包含各自所在的那一周,我真正需要获得的结果是5个周. ...

  6. SSO单点登录的研究

    一.单点登录的概述       单点登录(Single Sign On),简称为 SSO,SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. 用以解决同一公司不同子产 ...

  7. 使用configuration配置结束在quartz.net中使用硬编码Job,Trigger任务提高灵活性

    经常在项目中遇到定时任务的时候,通常第一个想到的是Timer定时器,但是这玩意功能太弱鸡,实际上通常采用的是专业化的第三方调度框架,比如说 Quartz,它具有功能强大和应用的灵活性,我想使用过的人都 ...

  8. 使用expect的自动化交互

    Q:利用shell脚本实现ssh自动登录远程服务器? A:expect命令 #!/usr/bin/expect spawn ssh root@172.16.11.99 expect "*pa ...

  9. Java过滤敏感词语/词汇---DFA算法

    最近网站需要在评论.投稿等地方过滤敏感词汇,于是在网上查找了相关教程,特此整理分享. 关于DFA算法,详细的可以去http://blog.csdn.net/u013378306/article/det ...

  10. OpenCV探索之路(五):图片缩放和图像金字塔

    对图像进行缩放的最简单方法当然是调用resize函数啦! resize函数可以将源图像精确地转化为指定尺寸的目标图像. 要缩小图像,一般推荐使用CV_INETR_AREA来插值:若要放大图像,推荐使用 ...