导师介绍的课程UFLDL(Unsupervised Feature Learning and Deep Learning)。前一段时间写了很多tensorflow方面的代码,但感觉在基础知识方面还是有很多不足,因此重新捡起这个课程来补补。
第一课讲的是Linear Regression,没有做笔记就暂且挑过了。
本节课讲的是Logistic Regression。Logistic Regression其实是softmax 的一种。
在Logistic Regression中,使用sigmoid函数,将feature的值约束到0,1之间。
cost function
很容易可以化成矩阵的形式。
cost function对theta求导,可以表示为:
化为矩阵容易表示的形式:
接下来介绍下作业的答案。
作业是对MNIST数据集总手写的0和1进行识别。
ex1\logistic_regression_vec.m
function [f,g] = logistic_regression_vec(theta, X,y)
%
% Arguments:
% theta - A column vector containing the parameter values to optimize.
% X - The examples stored in a matrix.
% X(i,j) is the i'th coordinate of the j'th example.
% y - The label for each example. y(j) is the j'th example's label.
%
m=size(X,2);
% initialize objective value and gradient.
f = 0;
g = zeros(size(theta));
prob = sigmoid(theta'*X);
f = -log(prob) * y' - log(1-prob) * (1-y)';
g = X * (prob-y)';
%
% TODO: Compute the logistic regression objective function and gradient
% using vectorized code. (It will be just a few lines of code!)
% Store the objective function value in 'f', and the gradient in 'g'.
%
%%% YOUR CODE HERE %%%
其中比较能够体现矩阵运算好处的部分就是y'或者(1-y)',直接将sum的功能包括在了矩阵运算中。