斯坦福大学深度学习笔记:神经网络

一、神经网络背景

神经网络的灵感来源与人的大脑。实验证明大脑利用同一个学习算法实现了听觉、视觉等等所有的功能,这也是神经网络算法美好的愿景。
神经网络算法在八十到九十年代被广泛使用过, 20世纪90年代,各种各样的浅层机器学习模型相继被提出,例如支撑向量机(SVM,Support Vector Machines)、 Boosting、最大熵方法(如LR,Logistic Regression)等。但之后便使用的变少了。但最近又开始流行起来了,原因是神经网络非常依赖计算能力的算法,随着新计算机性能的提高,算法又成为了有效的技术。

   二、神经网络模型表达

神经网络模型与人类神经元特别相似。
                  
逻辑回归的激活函数

   
第一层成为输入层(Input Layer),最后一层称为输出层(Output Layer),中间一层成为隐藏层(Hidden Layers)。我们为每一层都增加一个偏倚单位(bias unit):X0,


下面引入一些标记法来帮助描述模型:
    代表第j层的第i个激活单元。
    代表从第j层映射到第j+1层时的权重的矩阵,例如代表从第一层映射到第二层的权重的矩阵。其尺寸为:以第j层的激活单元数量为行数,以第j+1层的激活单元数为列数的矩阵。例如:上图所示的神经网络中的尺寸为4*3。

    三、正向传播

对于上面的神经网络我们可以计算第二层的值为:


               
  计算后加上

  根据第二层的值计算出第三层的值。
 正向传播就是如此,从输入参数到最终结果

          

   四、多类分类

如果输出结果超过两个我们使用多个输出节点,比如我们训练一个算法用来识别路人、汽车、摩托车和卡车,在输出层我们应该有4个值。例如,第一个值为1或0用于预测是否是行人,第二个值用于判断是否为汽车。
下面是该神经网络的可能结构示例:   
      
神经网络算法的结果可能为这四种之一:
                                

   五、神经网络的代价函数(cost function)


我们还记得逻辑回归中的代价函数
      
          

其实只要理解Cost function反映的就是预测值与实际值的误差,那么完全可以根据问题自定义一个Cost function表达式。在Coursera Machine Learning课程中将神经网络看作是输出层采用逻辑回归的分类器,因此其代价函数如下:

与逻辑回归对比只是逻辑回归的结果是一个,而是K个逻辑回归单元。
       其中 :
L代表一个神经网络中的层数
Sl 代表第l层的处理单元(包括偏见单元)的个数。
SL代表最后一层中处理单元的个数。
K代表我们希望分类的类的个数,与SL相等。

   六、反向传播(BACKPROPAGATION )

反向传播算法就是首先计算最后一层的误差,然后再一层一层反向求出各层误差,直到倒数第二层。
    因为第一层是输入变量不存在误差。

首先,我们引入 符号 δ ,解释如下:

代表了第 l 层的第 j 个节点的误差。

那么,各层各节点的error计算如下:

其中,


我们有了所有的误差表达式后,便可以计算代价函数的导数了。假设λ=0,即我们不做任何归一化处理时有:
      
重要的是清楚地知道上面式子中上下标的含义:
 l代表目前所计算的是第几层。
  j代表目前计算层中的激活单元的下标,也将是下一层的第j个输入变量的下标。
  i代表下一层中误差单元的下标,是受到权重矩阵中第i行影响的下一层中的误差单元的下标。
 在求出了之后,我们便可以计算代价函数的偏导数了,计算方法如下:

          

   七、 梯度检查(Gradient Checking)

当我们对一个较复杂的模型使用 梯度下降算法时,可能会存在一些不容易察觉的错误,意味着,虽然代价看上去在不断减小,但最终的结果可能并不是最优解。为了避免这样的问题,我们采取一种叫做梯度的数值检验(Numerical Gradient Checking)方法。

            

Octave中代码如下:
gradApprox = (J(theta + eps) – J(theta - eps)) / (2*eps)

多参数使用公式:


  八、随机初始化(Random Initialization)

我们不能式用全0或者全部相同数字来初始化参数。如果使用全0则会计算出相同的a1,a2。 那就意味着所有映射关系都是相同的,即所有的隐藏单元都在计算相同的激励值,那么多单元神经网络就是多余的,最终该网络只会得到一个特征。这被称为对称权重(Symmetric ways)。
我们使用随机初始化解决这种问题:
ɛ 的取值:
     

Θ 的初始化:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深度学习-面向视觉识别的卷积神经网络,2016斯坦福大学公开课。课程介绍: 计算机视觉在社会中已经逐渐普及,并广泛运用于搜索检索、图像理解、手机应用、地图导航、医疗制药、无人机和无人驾驶汽车等领域。而这些应用的核心技术就是图像分类、图像定位和图像探测等视觉识别任务。近期神经网络(也就是“深度学习”)方法上的进展极大地提升了这些代表当前发展水平的视觉识别系统的性能。 本课程将深入讲解深度学习框架的细节问题,聚焦面向视觉识别任务(尤其是图像分类任务)的端到端学习模型。在10周的课程中,学生们将会学习如何实现、训练和调试他们自己的神经网络,并建立起对计算机视觉领域的前沿研究方向的细节理解。最终的作业将包括训练一个有几百万参数的卷积神经网络,并将其应用到最大的图像分类数据库(ImageNet)上。我们将会聚焦于教授如何确定图像识别问题,学习算法(比如反向传播算法),对网络的训练和精细调整(fine-tuning)中的工程实践技巧,指导学生动手完成课程作业和最终的课程项目。本课程的大部分背景知识和素材都来源于ImageNet Challenge竞赛。 主讲人: 李飞飞,斯坦福大学计算机科学系副教授。担任斯坦福大学人工智能实验室和视觉实验室主任,主要研究方向为机器学习、计算机视觉、认知计算神经学。她在TED上的演讲,如何教计算机理解图片。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值