Stanford ML - Neural Networks: Representation 神经网络表示

在非线性回归问题中,需要的特征往往比较多,这样计算量会迅速变大。比如对100个特征采取二次拟合会产生5000个待计算的特征,再进一步三次拟合之类的,计算量就大到不可接受了。在计算机视觉中,计算机看到的是一个个的像素,也就是特征,如果采用逻辑回归来分类,计算量基本不可接受。当然也可以采取一些降维的方法,比如PCA之类的。这里呢来看看神经网络。


神经网络呢就是用计算机算法模拟人类的大脑,像大脑一样用“一个算法”解决所有的问题。对单个的神经元,仍然用sigmoid函数来表示。神经网络呢就类似于把多层神经元连接起来,分为输入层,隐藏层和输出层。为了提高运算速度,需要用向量来表示所有的计算。直接贴图:

Stanford ML - Neural Networks: Representation 神经网络表示_第1张图片


不得不说作业设计的相当合理,上周的作业正不知道怎么用向量计算的时候,这周的作业循序渐进的给了提示,一步步的引导。逻辑回归的Cost Function和梯度下降的偏导向量化表示如下,相当的简洁。

J = y' * log(sigmoid(X*theta)) + (1 - y)' * log(1 - sigmoid(X*theta));
J = -J/m;
J = J + sum(theta(2:end) .^ 2) * lambda / (2*m);

grad = X' * (sigmoid(X*theta) - y) / m;
grad(2:end) = grad(2:end) + theta(2:end) * lambda / m;

对于数字识别的作业,神经网络的解法如下:

X = [ones(m, 1), X];
a2 = sigmoid(X * Theta1');
a2 = [ones(size(a2, 1), 1), a2];

a3 = sigmoid(a2 * Theta2');
[y, p] = max(a3, [], 2);

对比逻辑回归的多分类解法,这个运行速度快不少。


你可能感兴趣的:(神经网络,learning,machine)