Toggle navigation
Yang's Blog
主页
week 9
Machine Learning
week 2
week 3
week 4
week 5
week 6
week 7
week 8
week 10
End_to_End_Learning
About Me
归档
标签
week 4
0
无
2017-09-08 23:02:14
6
0
hljyy96@126.com
1.non-linear hypothesis 利用我们之前接触到的linear regression或者是logistic regression处理数据时,有一个明显的缺点,就是当特征x太多时 ,计算量会非常大,以下图为例:  当只有$x_1和x_2$2个特征时,可以应用逻辑回归应用的很好,但是当x比较多,比如到100的时候,仅需要的两两组合就有$\frac {n^2} 2$种,大概5000种组合,于计算非常不利。 再比如图像识别的例子,计算机在识别一幅图像时识别的是图片对应的像素点的亮度值,如果是彩色图片的话还要加上像素点对应的RGB值,也就是说要在原有的$\frac {n^2} 2$基础上再乘一个3,计算量过大,为了解决这个问题,我们引入神经网络算法。 2.model representation 在提出具体模型前,我们要先弄清楚大脑的神经系统是如何工作的,如下图所示:  每一个神经元都被认为是一个processing unit/necleus,它含有很多输入信号的树突和唯一一个输出信号的轴突,神经网络是大量神经元相互连接并通过电脉冲来实现交流的一个网络系统。 神经网络建立在许多个神经元之上,每个神经元又是一个个学习模型,这些神经元也叫作activation unit,采纳一些特征作为输出,并且根据本身的一些模型作为输出,简易的神经网络如下图:  其中$x_1,x_2,x_3$为输入单元,我们将原始数据输入给他们,$a_1,a_2,a_3$是中间单元,它们负责将数据进行处理,然后递交给下一层,最后的是输出单元,它负责计算$h_\theta(x)$。 神经网络模型是由多个逻辑单元按照不同层级组合形成的网络,每一层的输出变量都是下一层的输入变量,下图为一个3层的神经网络:  第一层为input layer,第二层为hidden layer,第三层为output layer,为了方便计算,我们将每一层加上一个$x_0=1$的bias unit。 下面引入一些标记法来帮助描述模型: $a_i^ {(j)}$代表第j层的第i个activation unit,$\theta^{(j)}$代表从第j层映射到j+1层的参数或权重矩阵,其尺寸为以j+1层的activation unit的个数为行数,以第j层的activation unit的个数加一作为列数,比如上图神经网络中在没有添加bias unit时,$\theta^{(1)}$的矩阵为3*4的矩阵。 假设g(x)为一个sigmoid函数,那么隐藏层可以由以下的式子来表达:  最后的输出层的函数即为:  上述讨论只是将training set中的一行交给神经网络进行处理,要得到完整的学习模型,我们需要将所有的training sample交给神经网络处理得到。 综上我们可以知道,每一个a都是由上一层所有的x和每一个x对应的training sample组成和决定的,我们把这样从左到右的算法称为forward propagation。 把x和a分别用矩阵表示: $$ X=\begin {bmatrix} x_0\\ x_1\\ x_2\\ x_3 \end {bmatrix} $$ $$ \theta=\begin{bmatrix} \theta_{10},\theta_{11},\theta_{12},\theta_{13}\\ \theta_{20},...,...,...\\ ...,...,...,\theta_{33}\\ \end{bmatrix} $$ $$ a=\begin {bmatrix} a_1\\ a_2\\ a_3\\ \end {bmatrix} $$ 我们可以得到$\theta*X=a$ 相对于循环的方法,利用向量化的方法计算会更加简单,以上面的神经网络为例,将$\theta^{(1)}x$的值记为$z^{(2)}$,则$a^{(2)}=g(z^{(2)})$,那么第二层的值为:  输出的值为:  同上进行化简处理,将$\theta^{(2)}a^{(2)}$定义为$g(z^{(3)})$,则最终结果变为:$h_\theta(x)=a^{(3)}=g(z^{(3)})$,如果我们要对整个training set进行处理,需要将其特征矩阵进行转置处理,使同一个实例的特征都在同一列里,即: $z^{(2)}=\theta^{(1)}X^T$ $a^{(2)}=g(z^{(2)})$ 为了更好地理解神经网络,我们把左半部分遮住,得到:  可以看出来右半部分实际上就是以$a_0,a_1,a_2,a_3$按照逻辑回归的方式输出$h_\theta(x)$,即:$h_\theta(x)=g(\theta_1 ^{(2)}a^{(2)}_0+\theta_1 ^{(2)}a^{(2)}_1+\theta_1 ^{(2)}a^{(2)}_2+\theta_1 ^{(2)}a^{(2)}_3)$ 其实神经网络就像是logistic regression,只不过把logistic regression中的输入向量x1-x3变为了中间层$a_1^{(2)}-a_3^{(2)}$,所以我们可以把a看成为更高级的特征值,也就是x的进化版,并且他们是由x决定的,由于采用的是梯度下降,所以a是变化的,而且变化的越来越厉害,所以这些高级的特征值远比x的高级次方要厉害,也能更好地预测新的数据。 3.examples and institutions 在传统的线性回归和逻辑回归中,我们通常是利用初始的$x_1,x_2,x_1x_2,x_1^2...$等来确定相应的一系列特征,虽然我们可以定义如上述所述的多项式来更好地拟合,但是仍然会受到原始数据的限制。而在神经网络中,以之前提到的3层神经网络为例,第2层处理的是原始数据,而第三层处理的就是第二层抽象出来的数据,不再会受到原始数据的干扰,我们可以利用神经网络完成AND,OR,XOR,XNOR等运算,我们可以用如下图表示AND函数:  其中bias unit的权重为$\theta_0=-30$,$x_1和x_2$的权重分别为$\theta_1=20,\theta_2=20$,这样我们输出的函数为: $h_\theta(x)=g(-30+20x_1+20x_2)$ 由于g(X)为sigmoid函数,其图像如下所示:  所以当$x_1,x_2$分别取0或1时,hypothesis的输出如下所示:  可以看出来结果就是$x_1ANDx_2$ 同理,OR函数如下:  不一样的只有对应的权重,NOT的表示如下:  如我们之前所提到的,可以利用神经元组合形成新的神经网络,所以XNOR可以利用上述的3种神经元来得到,即XOR=($x_1$AND$x_2$)OR((NOT$x_1$)AND(NOT$x_2$))。 首先构造(NOT$x_1$)AND(NOT$x_2$):  然后将AND和OR将上述神经网络进行组合,得到如下所示:  这样就得到了XNOR。 3. multiclass classification 当我们涉及的不仅2个分类时,我们在输出层就要涉及到相等的输出个数,如下图4维向量所示:  神经网络的输出结果可能如下图4中情形之一:  最终为1的对应的特征即为我们想要的结果。
week 10
week 3
0
赞
6 人读过
新浪微博
微信
更多分享
腾讯微博
QQ空间
人人网
提交评论
立即登录
, 发表评论.
没有帐号?
立即注册
0
条评论
More...
文档导航