美文网首页
[ML] ex4 Neural Networks Learnin

[ML] ex4 Neural Networks Learnin

作者: 反复练习的阿离很笨吧 | 来源:发表于2018-11-12 14:14 被阅读0次

    1 Neural Networks

    才以上到ex3的前向传播是用的现成的数据,并不是自己学习出来的。

    1.1 Visualizing the data

    5000 training examples
    each training example is a 20 pixel by 20 pixel grayscale image which had been "unrolled" into a 400-dimensional vector
    matrix X: 5000 by 400
    vector y: 5000-dimensional (a "0" digit is labeled as "10")

    1.2 Model representation

    3 layers: an input layer,a hidden layer and an output layer
    % Theta1 has size 25 x 401
    % Theta2 has size 10 x 26

    1.3 Feedforward and cost function

    之前的cost function中,一个instance只有一个h_{\theta}(x),vector y对每一个instance也只有一个值,就可以直接矢量相乘求出cost。
    而现在这个多分类问题的cost function中有多个h_{\theta}(x),可以看作一个向量,vector y对每一个instance也被矢量化,与K个h_{\theta}(x)一一对应,所以,就可以先求出这一个instance的K个h_{\theta}(x)的cost的和。然后用for loop把m个instances的cost累加。
    向量化的好处就是不需要知道K是多少啊,直接乘就好了。
    一次性向量化的方法我想到脑子宕机都想不出来。所以累加instance的时候,只能先用for loop了。

    1. y给定的形式是label,是一个数字,需要把它矢量化。
      一开始没有矢量化,跑出来会出现10个cost值,还都不对。
    2. 不要忘记cost function里的log
      每次就是光把两项乘起来就特别开心,然后忘记给h加log。

    感觉自己写的矢量化思路特别清晰,比参考的几篇文章里绕来绕去的行列摆放都要好理解一些。

    1.4 Regularized cost function

    注意在归一化之前要去掉bias项Theta1_use=Theta1(:,2:end);
    点乘平方可以这样写的thetasq1=Theta1_use.^2;
    a=sum(x);%列求和
    a=sum(x,2);%行求和
    a=sum(x(:));%矩阵求和

    2 Backpropagation

    2.1 Sigmoid gradient

    因为是两个矩阵相乘,用点乘完成g = sigmoid(z).*(1.0-sigmoid(z));

    2.2 Random initialization

    W = rand(L_out, 1 + L_in) * 2 * epsilon_init - epsilon_init;

    2.3 Backpropagation

    相关文章

      网友评论

          本文标题:[ML] ex4 Neural Networks Learnin

          本文链接:https://www.haomeiwen.com/subject/nbrffqtx.html