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

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

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列。

时间: 2024-11-05 20:38:26

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

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

使用神经网络来实现自动驾驶,也就是说使汽车通过学习来自己驾驶. 下图是通过神经网络学习实现自动驾驶的图例讲解: 左下角是汽车所看到的前方的路况图像.左上图,可以看到一条水平的菜单栏(数字4所指示方向),白亮的区段显示的就是人类驾驶者选择的方向.而最右端则对应向右急转的操作(箭头3),中心稍微向左一点的位置(箭头2),则表示在这一点上人类驾驶者的操作是慢慢的向左拐.这幅图的第二部分(箭头5)对应的就是学习算法选出的行驶方向,类似的白亮的区段(箭头6)显示的就是神经网络在这里选择的行驶方向是稍微的左

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

假如我们在开发一个机器学习系统,想试着改进一个机器学习系统的性能,我们应该如何决定接下来应该选择哪条道路? 为了解释这一问题,以预测房价的学习例子.假如我们已经得到学习参数以后,要将我们的假设函数放到一组新的房屋样本上进行测试,这个时候我们会发现在预测房价时,产生了巨大的误差,现在我们的问题是要想改进这个算法接下来应该怎么办? 实际上我们可以想出很多种方法来改进算法的性能,其中一种办法是使用更多的训练样本.具体来讲,通过电话调查.上门调查,获取更多的不同的房屋出售数据.遗憾的是,好多人花费了大量

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

上篇文章提到了误差分析以及设定误差度量值的重要性.那就是设定某个实数来评估学习算法并衡量它的表现.有了算法的评估和误差度量值,有一件重要的事情要注意,就是使用一个合适的误差度量值,有时会对学习算法造成非常微妙的影响.这类问题就是偏斜类(skewed classes)的问题.什么意思呢.以癌症分类为例,我们拥有内科病人的特征变量,并希望知道他们是否患有癌症,这就像恶性与良性肿瘤的分类问题.假设y=1表示患者患有癌症,假设y=0表示没有得癌症,然后训练逻辑回归模型.假设用测试集检验了这个分类模型,并

斯坦福大学公开课机器学习: advice for applying machine learning | regularization and bais/variance(机器学习中方差和偏差如何相互影响、以及和算法的正则化之间的相互关系)

算法正则化可以有效地防止过拟合, 但正则化跟算法的偏差和方差又有什么关系呢?下面主要讨论一下方差和偏差两者之间是如何相互影响的.以及和算法的正则化之间的相互关系 假如我们要对高阶的多项式进行拟合,为了防止过拟合现象,我们要使用图下所示的正则化.因此我们试图通过下面的正则化项,来让参数的值尽可能小.正则化项的求和范围,照例取为j等于1到m,而非j等于0到m. 然后我们来分析以下三种情形.第一种情形:正则化参数lambda取一个比较大的值(比如lambda的值取为10000甚至更大).在这种情况下,

斯坦福大学公开课机器学习:advice for applying machine learning | learning curves (改进学习算法:高偏差和高方差与学习曲线的关系)

绘制学习曲线非常有用,比如你想检查你的学习算法,运行是否正常.或者你希望改进算法的表现或效果.那么学习曲线就是一种很好的工具.学习曲线可以判断某一个学习算法,是偏差.方差问题,或是二者皆有. 为了绘制一条学习曲线,通常先绘制出训练集数据的平均误差平方和(Jtrain),或者交叉验证集数据的平均误差平方和(Jcv).将其绘制成一个关于参数m的函数.也就是一个关于训练集.样本总数的函数.m一般是一个常数,比如m等于100,表示100组训练样本.但我们要自己取一些m的值,也就是说对m的取值做一点限制,

斯坦福大学公开课机器学习:machine learning system design | trading off precision and recall(F score公式的提出:学习算法中如何平衡(取舍)查准率和召回率的数值)

一般来说,召回率和查准率的关系如下:1.如果需要很高的置信度的话,查准率会很高,相应的召回率很低:2.如果需要避免假阴性的话,召回率会很高,查准率会很低.下图右边显示的是召回率和查准率在一个学习算法中的关系.值得注意的是,没有一个学习算法是能同时保证高查准率和召回率的,要高查准率还是高召回率,取决于自己的需求.此外,查准率和召回率之间的关系曲线可以是多样性,不一定是图示的形状. 如何取舍查准率和召回率数值: 一开始提出来的算法有取查准率和召回率的平均值,如下面的公式average=(P+R)/2

斯坦福大学公开课机器学习:machine learning system design | data for machine learning(数据量很大时,学习算法表现比较好的原理)

下图为四种不同算法应用在不同大小数据量时的表现,可以看出,随着数据量的增大,算法的表现趋于接近.即不管多么糟糕的算法,数据量非常大的时候,算法表现也可以很好. 数据量很大时,学习算法表现比较好的原理: 使用比较大的训练集(意味着不可能过拟合),此时方差会比较低:此时,如果在逻辑回归或者线性回归模型中加入很多参数以及层数的话,则偏差会很低.综合起来,这会是一个很好的高性能的学习算法. 原文地址:https://www.cnblogs.com/chenwenyan/p/8326027.html

斯坦福大学公开课:iOS 7应用开发 笔记

2015-07-06 第一讲   课务.iOS概述 -------------------------------------------------- 开始学习斯坦福大学公开课:iOS 7应用开发留下笔记

《斯坦福大学公开课:编程方法学》随笔

这是观看网易公开课 Mehran Sahami教授的<斯坦福大学公开课:编程方法学>后的随笔. 目前只看到第三次课,<Karel与Java>,我的收获有以下要点: 1.软件工程跟普通的写代码是不同的.软件应该考虑很多东西,比如:可移植性.便于升级维护等等,而不仅仅是写出代码实现功能那么简单. 2.代码是写给机器执行的,但更重要的是人要让人能看懂.(代码后期维护等等的工作量或者时间是写代码的10倍及更多,所以让代码更规范更易被人读懂很重要) 3.准确定义一个函数.一个类.一个包的功能