神经网络是在模仿大脑中的神经元或者神经网络时发明的。因此,要解释如何表示模型假设,我们先来看单个神经元在大脑中是什么样的。如下图,我们的大脑中充满了神经元,神经元是大脑中的细胞,其中有两点值得我们注意,一是神经元有细胞主体,二是神经元有一定数量的输入神经。这些输入神经叫做树突,可以把它们想象成输入电线,它们接收来自其他神经元的信息,神经元的输出神经叫做轴突,这些输出神经是用来给其他神经元传递信号或者传送信息的。简而言之,神经元是一个计算单元,它从输入神经接受一定数目的信息,并做一些计算,然后将结果通过它的轴突传送到其他节点,或者大脑中的其他神经元。右下图是一组神经元的示意图,神经元利用微弱的电流进行沟通,这些弱电流也称作动作电位,其实就是一些微弱的电流,所以如果神经元想要传递一个消息,它就会就通过它的轴突发送一段微弱电流给其他神经元。这是一条连接到输入神经或者连接另一个神经元树突的神经,接下来这个神经元接收这条消息做一些计算。它有可能会反过来将在轴突上的自己的消息传给其他神经元。这就是所有人类思考的模型:我们的神经元把自己的收到的消息进行计算并向其他神经元传递信息。这也是我们的感觉和肌肉运转的原理,如果你想活动一块肌肉,就会触发一个神经元给你的肌肉发送脉冲,并引起你的肌肉收缩。如果一些感官,比如说眼睛想要给大脑传递一个消息,那么它就像这样发送电脉冲给大脑。

Neuron model:logistic unit

在一个神经网络里,或者说在我们在电脑上实现的人工神经网络里,我们将使用一个非常简单的模型,来模拟神经元的工作。我们将神经元模拟成一个逻辑单元,当画一个黄色圆圈时(黄色小圈代表一个单一的神经元,下图所示),你应该把它想象成作用类似于神经元的东西,然后我们通过它的树突或者说它的输入神经传递给它一些信息,然后神经元做一些计算,并通过它的输出神经,即它的轴突输出计算结果,当画一个像这样的图表时,就表示对h(x)的计算,h(x)等于1除以1+e的负θ转置乘以x。通常,x和θ是参数向量。这是一个简单的模型,甚至说是一个过于简单的模拟神经元的模型。它被输入x1、x2和x3,然后输出一些类似这样的结果。当绘制一个神经网络时,通常只绘制输入节点x1、x2和x3。但有时也可以这样做:增加一个额外的节点x0,这个x0节点,有时也被称作偏置单位或偏置神经元,但因为x0总是等于1,所以有时候会画出它,有时不会画出,这取决于它是否对例子有利。现在讨论最后一个关于神经网络的术语,有时我们会说这是一个神经元,一个有s型函数或者逻辑函数作为激励函数的人工神经元。在神经网络术语中,激励函数只是对类似非线性函数g(z)的另一个术语称呼,g(z)等于1除以1加e的-z次方。到目前为止,θ一直被称为模型的参数,以后大概会继续将这个术语与“参数”相对应,而不是与神经网络。在关于神经网络的文献里,有时可能会看到人们谈论一个模型的权重,权重其实和模型的参数是一样的东西。

神经网络其实就是不同的神经元组合在一起的集合,具体来说,就是我们输入单元x1、x2和x3(如下图),有时候也可以画上额外的节点x0. 这里有个神经元,我们写成a1(2),a2(2),a3(2)。然后再次说明,我们可以在这里添加一个a0,和一个额外的偏度单元,它的值永远是1,最后我们在最后一层有第三个节点,正是这第三个节点,输出假设函数h(x)计算的结果。再多说一点关于神经网络的术语网络中的第一层也被称为输入层,因为我们在这一层输入我们的特征项x1、x2和x3,最后一层也称为输出层,中间的两层也被称作隐藏层,隐藏层不是一个很合适的术语,但是直觉上我们知道在监督学习中,你能看到输入,也能看到正确的输出。而隐藏层的值,你在训练集里是看不到的。它的值不是x,也不是y,所以我们叫它隐藏层。稍后我们会看到神经网络可以有不止一个的隐藏层,但在这个例子中,我们有一个输入层—第1层、一个隐藏层—第2层和一个输出层—第3层。但实际上任何非输入层或非输出层的层就被称为隐藏层。

为了解释神经网络具体的计算步骤,下图有些记号要解释,使用a上标(j)、下标i表示第j层的第i个神经元或单元。具体来说,a上标(2)、下标1,表示第2层的第一个激活值,所谓激励(activation)是指由一个具体神经元读入计算并输出的值。此外,神经网络被这些矩阵参数化,θ上标(j) 将成为一个波矩阵控制着从一层,比如说从第一层到第二层或者第二层到第三层的作用。下图的第一个隐藏单元是这样计算它的值的:a(2)1等于s函数或者说s激励函数,也叫做逻辑激励函数,作用在这种输入的线性组合上的结果。第二个隐藏单元,等于s函数作用在这个线性组合上的值。参数矩阵控制了来自三个输入单元、三个隐藏单元的映射。因此θ1的维数将变成3。θ1将变成一个3乘4维的矩阵。更一般的, 如果一个网络在第j层有sj个单元,在j+1层有sj+1个单元,那么矩阵θ(j),即控制第j层到第j+1层映射的矩阵的维度为sj+1* (sj+1)。所以θ(j)的维度是sj+1行、sj+1列。

斯坦福大学公开课机器学习:Neural network-model representation(神经网络模型及神经单元的理解)的更多相关文章

  1. 斯坦福大学公开课机器学习:advice for applying machine learning | diagnosing bias vs. variance(机器学习:诊断偏差和方差问题)

    当我们运行一个学习算法时,如果这个算法的表现不理想,那么有两种原因导致:要么偏差比较大.要么方差比较大.换句话说,要么是欠拟合.要么是过拟合.那么这两种情况,哪个和偏差有关.哪个和方差有关,或者是不是 ...

  2. 第19月第8天 斯坦福大学公开课机器学习 (吴恩达 Andrew Ng)

    1.斯坦福大学公开课机器学习 (吴恩达 Andrew Ng) http://open.163.com/special/opencourse/machinelearning.html 笔记 http:/ ...

  3. 斯坦福大学公开课机器学习:advice for applying machine learning | model selection and training/validation/test sets(模型选择以及训练集、交叉验证集和测试集的概念)

    怎样选用正确的特征构造学习算法或者如何选择学习算法中的正则化参数lambda?这些问题我们称之为模型选择问题. 在对于这一问题的讨论中,我们不仅将数据分为:训练集和测试集,而是将数据分为三个数据组:也 ...

  4. 斯坦福大学公开课机器学习:Neural Networks,representation: non-linear hypotheses(为什么需要做非线性分类器)

    如上图所示,如果用逻辑回归来解决这个问题,首先需要构造一个包含很多非线性项的逻辑回归函数g(x).这里g仍是s型函数(即 ).我们能让函数包含很多像这的多项式,当多项式足够多时,那么你也许能够得到可以 ...

  5. 斯坦福大学公开课机器学习: neural networks learning - autonomous driving example(通过神经网络实现自动驾驶实例)

    使用神经网络来实现自动驾驶,也就是说使汽车通过学习来自己驾驶. 下图是通过神经网络学习实现自动驾驶的图例讲解: 左下角是汽车所看到的前方的路况图像.左上图,可以看到一条水平的菜单栏(数字4所指示方向) ...

  6. 斯坦福大学公开课机器学习: machine learning system design | error analysis(误差分析:检验算法是否有高偏差和高方差)

    误差分析可以更系统地做出决定.如果你准备研究机器学习的东西或者构造机器学习应用程序,最好的实践方法不是建立一个非常复杂的系统.拥有多么复杂的变量,而是构建一个简单的算法.这样你可以很快地实现它.研究机 ...

  7. 斯坦福大学公开课机器学习:machine learning system design | error metrics for skewed classes(偏斜类问题的定义以及针对偏斜类问题的评估度量值:查准率(precision)和召回率(recall))

    上篇文章提到了误差分析以及设定误差度量值的重要性.那就是设定某个实数来评估学习算法并衡量它的表现.有了算法的评估和误差度量值,有一件重要的事情要注意,就是使用一个合适的误差度量值,有时会对学习算法造成 ...

  8. 斯坦福大学公开课机器学习: machine learning system design | prioritizing what to work on : spam classification example(设计复杂机器学习系统的主要问题及构建复杂的机器学习系统的建议)

    当我们在进行机器学习时着重要考虑什么问题.以垃圾邮件分类为例子.假如你想建立一个垃圾邮件分类器,看这些垃圾邮件与非垃圾邮件的例子.左边这封邮件想向你推销东西.注意这封垃圾邮件有意的拼错一些单词,就像M ...

  9. 斯坦福大学公开课机器学习:advice for applying machine learning - deciding what to try next(设计机器学习系统时,怎样确定最适合、最正确的方法)

    假如我们在开发一个机器学习系统,想试着改进一个机器学习系统的性能,我们应该如何决定接下来应该选择哪条道路? 为了解释这一问题,以预测房价的学习例子.假如我们已经得到学习参数以后,要将我们的假设函数放到 ...

随机推荐

  1. Nginx 403 Forbidden 解决方案 史上最靠谱

    原因 1. SELinux为开启状态(enabled) 查看SELinux的状态 sestatus 如果不是 disables , 需要 vi /etc/selinux/config 将以前的 SEL ...

  2. 移动端触摸(touch)事件

    移动端时代已经到来,作为前端开发的我们没有理由也不应该坐井观天,而是勇敢地跳出心里的那口井,去拥抱蔚蓝的天空.该来的总会来,我们要做的就是接受未知的挑战.正如你所看到的,这是一篇关于移动端触摸事件的文 ...

  3. 初学习Qt的一些感悟

    最近用Qt写了个人项目,有如下心得(可能有不准确): Qt尽管没有扩展C++语法,但是有额外编译链,每个Q_OBJECT类编译的时候会用moc工具生成另一个meta C++类,之后就是标准C++编译流 ...

  4. 团队作业 week 14

    0. 在吹牛之前,先回答这个问题: 如果你的团队来了一个新队员,有一台全新的机器, 你们是否有一个文档,只要设置了相应的权限,她就可以根据文档,从头开始搭建环境,并成功地把最新.最稳定版本的软件编译出 ...

  5. Practice4 阅读《构建之法》6-7章

    关于第五章后面的阅读已经在Practice3中有所感悟,下面是6-7章的读书笔记. 第6章 敏捷流程这一章讲了“敏捷流程”这一概念,关于这一名词我是很陌生的,在阅读之后有了一定的理解.敏捷流程是提供了 ...

  6. 第三个Sprint冲刺第五天(燃尽图)

  7. 无限级结构SQL查询所有的下级和所有的下级

    Id,PId无限级结构,查询某个Id的所有下级或所有上级,使用WITH AS查询 查找Id为1所有的下级 /*查找Id为1所有的下级*/ WITH T AS( SELECT Id,PId,Name,0 ...

  8. TCP程序设计基础

    1.端口与套接字 IP地址--->端口--->套接字(Socket)--->应用程序 2.TCP服务器端和客户端通信 1)服务器创建一个ServerSocket,调用accept() ...

  9. 菜鸟教程--AJAX

    一.简介1.AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术.2.AJAX = 异步 JavaScript 和 XML.3.通过在后台与服务器进行少量数据交换,AJAX 可以使网 ...

  10. Oracle 数据库 Only 导出空表的方法

    1. 之前因为oracle11.2.0.1 的bug(deferred_segment_creation) 引起无法将空表导出. 有时给同事解释上半个小时他们也不知道 如何处理 或者是 他们不会用ex ...