Machine Learning Notes PartⅣ

前言:由于本人今年考研结束后才开始接触ML,入门决定从Andrew Ng的ML课程学起。笔记内容主要来自Andrew Ng教授的讲义和学习视频,以及在学习过程中翻阅的资料,顺序大致按照网易云课堂上的目录,大多是自己觉得有意义的或者难懂的内容,然而其中难免掺杂自己的理解,如有错误,敬请大家批评指正。


神经网络:表述(Neural Networks: Representation)


非线性假设(Non-linear Hypotheses)

之前学习的内容里, 无论是线性回归还是逻辑回归都有这样一个缺点,即:当特征太多时,计算的负荷会非常大。
之前我们已经看到过,使用非线性的多项式项,能够帮助我们建立更好的分类模型。假设我们有非常多的特征,例如大于100个变量,我们希望用这100个特征来构建一个非线性的多项式模型,结果将是数量非常惊人的特征组合,即便我们只采用两两特征的组合 x1x2+x1x3+...+x2x3+x2x4+...+x99x100 x 1 x 2 + x 1 x 3 + . . . + x 2 x 3 + x 2 x 4 + . . . + x 99 x 100 ,我们也会有接近5000个组合而成的特征。这对于一般的逻辑回归来说需要计算的特征太多了,它无法有效的处理这么多特征,这时候就需要神经网络。


神经元和大脑(Neurons and the Brain )

神经网络是一种很古老的算法,它最初产生的目的是制造能模拟大脑的机器,它逐渐兴起于二十世纪八九十年代,应用得非常广泛。但由于各种原因,在90年代的后期应用减少了。但是最近,神经网络又东山再起了。其中一个原因是:神经网络是计算量有些偏大的算法。但是随着由于近些年计算机的运行速度变快,才足以真正运行起大规模的神经网络。


模型表示(Model Representation)

这里写图片描述
如上图所示是类似于神经元的神经网络,其中 x1,x2,x3 x 1 , x 2 , x 3 是输入单元(input units),将原始数据输入给他们, a1,a2,a3 a 1 , a 2 , a 3 是中间单元,他们负责将数据进行处理,传递到下一层。最后是输出单元,它负责计算 hθ(x) h θ ( x )

神经网络模型是许多逻辑单元按照不同层级组织起来的网络,每一层的输出变量都是下一层的输入变量。下图为一个3层的神经网络,第一层成为输入层(Input Layer),最后一层称为输出层(Output Layer),中间一层成为隐藏层(Hidden Layers)。我们为每一层都增加一个偏差单位(bias unit):
这里写图片描述
a(j)ijiθ(j)jj+1θ(1)j+1jθ(1)34 a i ( j ) 代 表 第 j 层 的 第 i 个 激 活 单 元 。 θ ( j ) 代 表 从 第 j 层 映 射 到 第 j + 1 层 时 的 权 重 的 矩 阵 , 例 如 θ ( 1 ) 代 表 从 第 一 层 映 射 到 第 二 层 的 权 重 的 矩 阵 。 其 尺 寸 为 : 以 第 j + 1 层 的 激 活 单 元 数 量 为 行 数 , 以 第 j 层 的 激 活 单 元 数 加 一 为 列 数 的 矩 阵 。 例 如 : 上 图 所 示 的 神 经 网 络 中 θ ( 1 ) 的 尺 寸 为 3 ∗ 4 。
a(2)1=g(Θ(1)10x0+Θ(1)11x1+Θ(1)12x2+Θ(1)13x3) a 1 ( 2 ) = g ( Θ 10 ( 1 ) x 0 + Θ 11 ( 1 ) x 1 + Θ 12 ( 1 ) x 2 + Θ 13 ( 1 ) x 3 )
a(2)2=g(Θ(1)20x0+Θ(1)21x1+Θ(1)22x2+Θ(1)23x3) a 2 ( 2 ) = g ( Θ 20 ( 1 ) x 0 + Θ 21 ( 1 ) x 1 + Θ 22 ( 1 ) x 2 + Θ 23 ( 1 ) x 3 )
a(2)3=g(Θ(1)30x0+Θ(1)31x1+Θ(1)32x2+Θ(1)33x3) a 3 ( 2 ) = g ( Θ 30 ( 1 ) x 0 + Θ 31 ( 1 ) x 1 + Θ 32 ( 1 ) x 2 + Θ 33 ( 1 ) x 3 )
hΘ(x)=g(Θ(2)10a(2)0+Θ(2)11a(2)1+Θ(2)12a(2)2+Θ(2)13a(2)3) h Θ ( x ) = g ( Θ 10 ( 2 ) a 0 ( 2 ) + Θ 11 ( 2 ) a 1 ( 2 ) + Θ 12 ( 2 ) a 2 ( 2 ) + Θ 13 ( 2 ) a 3 ( 2 ) )
通过上述可以得出,每一个a都是由上一层所有的x和每一个x所对应的 θ θ 决定的(把x, θ, a 分别用矩阵表示,我们可以得到θ⋅X=a )。我们把这样从左到右的算法称为前向传播算法( forward propagation)。


多类分类(Multiclass Classification)

当我们有不止两种分类时(也就是y=1,2,3….),比如以下这种情况,该怎么办?如果我们要训练一个神经网络算法来识别路人、汽车、摩托车和卡车,在输出层我们应该有4个值。例如,第一个值为1或0用于预测是否是行人,第二个值用于判断是否为汽车。
输入向量x有三个维度,两个中间层,输出层4个神经元分别用来表示4类,也就是每一个数据在输出层都会出现 [a,b,c,d]T [ a , b , c , d ] T ,且a,b,c,d中仅有一个为1,表示当前类。下面是该神经网络的可能结构示例:
这里写图片描述
这里写图片描述
神经网络算法的输出结果为四种可能情形之一:这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值