Andrew NG Coursera教程学习笔记-Week4

Motivation

Non-Linear Hypothesis

这一小节主要讲了针对复杂的假设,简单的Linear Regression模型无法很好的拟合,而为了更好的拟合我们可能需要二次多项式甚至三次多项式来进行拟合。这种情况下,feature数量会指数级增长。尤其是本身样本中的feature就比较多时,那么最终多项式中的feature数量会非常非常大,这导致训练模型时的计算量是非常非常大的。


Andrew NG Coursera教程学习笔记-Week4_第1张图片
feature increase

Andrew后通过图像识别的例子讲述了,实际在训练此类数据的时候,如果使用之前的logistic regression的形式进行训练,feature的数量是非常非常大的(一个50x50 pixels的feature数量,如果仅是二次多项式,也会达到3million的数量级)。


Andrew NG Coursera教程学习笔记-Week4_第2张图片
computer vision
Andrew NG Coursera教程学习笔记-Week4_第3张图片
feature num increased dramatically

Neurons and Brain

此小节主要讲述了大脑的一些原理,讲述了一些实际的例子来展示我们的大脑如何处理数据。

Neural Networks

Modal Representation I

此小节主要讲了神经网络的原理,实际是模仿大脑处理信息的原理,以及如何表示神经网络的各个概念。
我们的大脑实际也是通过接收传感器(眼睛,耳朵,皮肤等)产生的生物电信号作为输入,然后经过神经元细胞的层层处理最终产生觉知,进而通过其它连通的神经元产生控制信号,来控制我们的肌肉,从而产生动作或者语言。


Andrew NG Coursera教程学习笔记-Week4_第4张图片
neural in the brain

神经元细胞的树突(Dendrite)是输入线路,而轴突(Axon)是输出线路,神经元细胞会根据输入信号进行计算,如果一旦达到阈值(threshold)就会产生输出信号通过轴突传递给下一层神经元进行处理。神经元细胞彼此连接,并通过此种层层处理产生高阶信号。
计算机的神经网络也是通过类似的结构来解析输入信号,经过层层处理而产生高阶信号。
下图是一个单个"神经元"处理单元,该单元有三个输入(如果算上x(0)则是4个输入,x(0)又称为bias unit)


Andrew NG Coursera教程学习笔记-Week4_第5张图片
neural model

"神经元"的计算是通过sigmoid activation function来进行计算的(或者叫做logistic activation function),这块实际跟我们之前的logistic regression差不多,不再多说。
下图是将这些"神经元"连接起来构成了神经网络:
Andrew NG Coursera教程学习笔记-Week4_第6张图片
neuralnet.png

这个例子中一共是三层网络,第一层就是layer 1,也是输入层(input layer);第二层是layer 2, 是hidden layer;第三层是layer 3,是输出层(output layer)
下图展示了如何通过输入层的信号x1, x2, x3计算得到layer 2的输出a1,a2, a3,进而再通过layer 3的计算得出最后的输出结果。


Andrew NG Coursera教程学习笔记-Week4_第7张图片
notation.png
  • 注意,虽然θ(j)下标为j,但是实际在j+1层计算的时候使用。由于θ实际是表明该输入信号的权重,所以θ也叫weight,也可以叫parameter. 用于从第j层到第j+1层的映射。
  • θ(j) = S(j+1) x (S(j) + 1). 即j+1层有几个节点就有几行,j层输入节点由于要加上bias unit,所以要+1,也就是表明有多少个输入,也就是一行中有多少个θ参数,所以也就是几列。

Modal Representation II

此小节主要讲了前向传播的概念,以及如何通过向量化的方式来计算
如下图所示,我们可以将x和a都用向量来表示:


Andrew NG Coursera教程学习笔记-Week4_第8张图片
vectorized implementation
  • x向量是包含x0这个bias unit的
  • 计算出来的z向量不包含bias unit,只有通过hΘ(x)计算的输出值
  • 当计算下一层的时候,需要为z向量加上一个a0, a0为1,因此在进入下一层计算之前a向量从一个n阶的向量变为了n+1阶的向量,然后再计算z(3)
  • g(z)计算时,是针对z向量中的每个元素做sigmoid运算
  • 而x向量也可以使用更加通用的a(1)来表示,这样我们可以用如下更加通用的公式来表示:


    z term
  • a(j)的计算公式如下:注意z(j)需要添加bias unit之后再计算


    a term

另外,之所以叫前向传播是由于这种激活是不断向前激活的,所以是前向,这个主要跟后向传播区分。
神经网络,如果把前半部分遮住,就跟我们的logistic regression是一样的,唯一的区别就是使用了新的特征值a1, a2, a3...


Andrew NG Coursera教程学习笔记-Week4_第9张图片
neural network

能不能理解成每一层都在转换特征含义,第一层的原始数据,第二层就转换成了新的特征含义,比如从纯数字转化为了色彩特征,再下一层,从色彩特征再转化为更加抽象高阶的语义特征。

最后,神经网络也可以是多层架构,除了输入层和输出层,其它都是hidden layer

Applications

Examples and Intuitions I

此小节主要讲述了单个'神经元'如何实现逻辑运算。
首先是当输入为(0, 1)时,实现逻辑与运算如下图所示:


Andrew NG Coursera教程学习笔记-Week4_第10张图片
logic and

下图是实现逻辑或:


Andrew NG Coursera教程学习笔记-Week4_第11张图片
logic or

Examples and Intuitions II

此小节主要讲了如何通过多层的神经网络来进行更加复杂的计算(本节举的是XNOR的例子)
首先,讲了not运算


Andrew NG Coursera教程学习笔记-Week4_第12张图片
logic not

然后讲了通过三层神经网络实现了XNOR运算(即相同为1,相异为0)


Andrew NG Coursera教程学习笔记-Week4_第13张图片
xnor

Multiclass Classification

此小节讲了多类别分类问题,通过在输出层设定多个节点来表示多个分类,具体结构如下图:


Andrew NG Coursera教程学习笔记-Week4_第14张图片
multiclass

这种情况下y(i)就成为了一个vector,而不是一个标量了,如下图所示:


Andrew NG Coursera教程学习笔记-Week4_第15张图片
Representation

你可能感兴趣的:(Andrew NG Coursera教程学习笔记-Week4)