UFLDL学习笔记:Logistic Regression

导师介绍的课程UFLDL(Unsupervised Feature Learning and Deep Learning)。前一段时间写了很多tensorflow方面的代码,但感觉在基础知识方面还是有很多不足,因此重新捡起这个课程来补补。

第一课讲的是Linear Regression,没有做笔记就暂且挑过了。

本节课讲的是Logistic Regression。Logistic Regression其实是softmax 的一种。

在Logistic Regression中,使用sigmoid函数,将feature的值约束到0,1之间。

cost function

image.png

很容易可以化成矩阵的形式。

cost function对theta求导,可以表示为:

image.png

化为矩阵容易表示的形式:

image.png

接下来介绍下作业的答案。
作业是对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的功能包括在了矩阵运算中。

你可能感兴趣的:(UFLDL学习笔记:Logistic Regression)