get start code:  https://github.com/amaas/stanford_dl_ex

注意,该工具包使用lbfgs作为优化算法, 如果在win32平台下使用,查看common\minFunc_2012\minFunc\compiled目录会发现这里缺少lbfgsAddC.mexw32和lbfgsProdC.mexw32,调用时会报错: Undefined function or method 'lbfgsAddC' for input arguments of type 'int32'。

解决办法是mex两个文件的C源文件,位于\common\minFunc_2012\minFunc\mex目录下:

mex lbfgsAddC

提示选择编译器,选择默认的lcc编译器,将编译好的后缀名为mexw32的文件复制到compiled目录下即可,lbfgsProdC同理。

get data: http://ai.stanford.edu/~amaas/data/data.zip

1, Linear Regression

修改linear_regression.m的末尾

%%% YOUR CODE HERE %%%
for i=1:m
    f = f + 0.5 * ( (theta' * X(:, i) - y(i))^2 ); 
end
for j=1:n
    for i=1:m
        g(j) = g(j) + X(j, i)*(theta'*X(:, i) - y(i)); 
    end
end

向量化代码如下:

y_hat = theta'*X;
f = sum( (y_hat - y).^2 )/2;
g = X*(y_hat' - y');

运行ex1a_linreg.m,得到结果如下:

2, Logistic Regression

修改logistic_regression.m末尾

%%% YOUR CODE HERE %%%
for i=1:m
    h = sigmoid(theta'*X(:, i));
    f = f + ( y(i) * log(h) + (1 - y(i))*log(1 - h) );
end
for j=1:n
    for i=1:m
        g(j) = g(j) + X(j, i)*(sigmoid(theta'*X(:, i)) - y(i));
    end
end

向量化代码:

y_hat = sigmoid(theta'*X);
f = (-1)*sum( y*log(y_hat') + (1-y)*log(1-y_hat') );
g = X*(y_hat' - y');

运行ex1b_logreg.m, 提示错误:
??? Error using ==> fread
Invalid precision.
Error in ==> loadMNISTImages at 15
images = fread(fp, inf, 'unsigned char');

修改loadMNISTImages.m

images = fread(fp, inf, 'unsigned char'); 改为:images = fread(fp, inf, 'uchar');

继续运行ex1b_logreg.m,提示错误:

??? Error using ==> permute
Out of memory. Type HELP MEMORY for your options.

是由于WIN32虚拟内存不够引起。

处理方法参照:http://blog.csdn.net/abcjennifer/article/details/43193865

结果如下:

......

Step Size below progTol
Optimization took 126.380402 seconds.
Training accuracy: 100.0%
Test accuracy: 100.0%

3, gradient check

a. 在ex1a_linreg.m文件中:

theta = rand(n,1);

%grad_check(@linear_regression, theta, 100, train.X, train.y);
grad_check(@linear_regression_vec, theta, 100, train.X, train.y);

b. 在ex1b_logreg.m文件中:

theta = rand(n,1)*0.001;
%grad_check(@linear_regression, theta, 100, train.X, train.y);
grad_check(@linear_regression_vec, theta, 100, train.X, train.y);

4, softmax

cost function的形式,看得出来是最大似乎估计的log形式

值得注意的是这一段话:

But the Hessian is singular/non-invertible, which causes a straightforward implementation of Newton’s method to run into numerical problems.

可以理解为最优化参数不唯一,当cost达到最小时,参数依然可以向某个方向移动,优化的时候常常会出现问题,可以对参数再加上额外的约束。

ufldl tutorial excise - Supervised Learning and Optimization相关推荐

  1. ML之SL:监督学习(Supervised Learning)的简介、应用、经典案例之详细攻略

    ML之SL:监督学习(Supervised Learning)的简介.应用.经典案例之详细攻略 目录 监督学习(Supervised Learning)的简介 1.监督学习问题的两大类-分类问题和回归 ...

  2. 文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?

    学习笔记,仅供参考,有错必纠 关键词:优化:机器学习:概括能力:数据 文章目录 How Can Machine Learning and Optimization Help Each Other Be ...

  3. UFLDL机器学习 Andrew Ng-Deep Learning课程

    UFLDL机器学习 && Andrew Ng-Deep Learning课程 本博客转载自:http://blog.csdn.net/u012432611/article/detail ...

  4. 【论文导读】- Link Weight Prediction Using Supervised Learning Methods(使用监督学习方法的链路权重预测及其在Yelp网络中的应用)

    文章目录 论文信息 摘要 主要内容(contributions) 图模型和评价指标 特征指标 原图特征指标 原始图转线图 线图特征指标 论文信息 Link Weight Prediction Usin ...

  5. 监督学习(supervised learning)与非监督学习(unsupervised learning)

    一,监督学习(supervised learning): 监督学习(supervised learning)的任务是学习一个模型,使模型能够对任意给定的输入,对其相应的输出做出一个好的预测. 即:利用 ...

  6. Self -Supervised Learning

    Self -Supervised Learning 个人学习笔记: BART使用了MASS中的所有方法(五种),结果表现更好 实验:将DNA表示中的A.T.C和G随机赋英文单词,将每个类别组成一个文本 ...

  7. INF442 Amphi 6: Supervised learning and k-NN predictors | Genericity

    INF442 Amphi 6: Supervised learning and k-NN predictors | Genericity 1. Supervised Learning 1.1 不同的损 ...

  8. 1.Supervised Learning with Projected Entangled Pair States

    Supervised Learning with Projected Entangled Pair States 这份笔记是在阅读论文<Supervised Learning with Proj ...

  9. 关于弱监督学习的详细介绍——A Brief Introduction to Weakly Supervised Learning

    目录 介绍 主动学习 半监督学习 多实例学习 带噪学习 Snorkel 框架介绍 参考 介绍 在机器学习领域,学习任务可大致划分为两类,一种是监督学习,另一种是非监督学习.通常,两者都需要从包含大量训 ...

  10. 弱监督学习 weakly supervised learning 笔记

    周志华 A Brief Introduction to Weakly Supervised Learning 2018 引言 在机器学习领域,学习任务可以划分为监督学习.非监督学习.通常,两者都需要从 ...

最新文章

  1. Android 的简介和体系结构中每个层的功能。
  2. 深入浅出计算机组成原理学习笔记:总线-计算机内部的高速公路(第42讲)
  3. Java中的关键字——final
  4. 网络编程学习笔记一:Socket编程
  5. 不要把HANA跟BW混为一谈
  6. Quarkus 0.12.0 发布,下一代 K8s 原生 Java 框架
  7. chrome浏览器net::ERR_TOO_MANY_REDIRECTS
  8. 计算机id不同于MAC,Gurman:Mac上的Face ID将在几年内出现
  9. 线段树——最大数——洛谷——1198
  10. SCI/SCIE/SSCI/期刊简介及官方查询验证方法
  11. svc预测概率_sklearn-SVC实现与类参数
  12. 【游戏安利】 益智休闲类游戏安利
  13. AUTOMATE THE BORING STUFF WITH PYTHON读书笔记 - 第4章:LISTS
  14. 前端响应式/自适应/流动布局
  15. Django实现QQ登录
  16. 在 angular6 中自定义 webpack 配置
  17. 几个Windows强力卸载工具软件推荐
  18. 2021全年营收净利润双增,李宁财报透露哪些确定与不定?
  19. 计算机网络协议分为哪几层?7层协议、5层协议、4层协议。
  20. Python OpenCV绘画实现 油画效果、水彩效果

热门文章

  1. 计算机应用oas,基于XML的OAS生成平台的研究与实现-计算机应用技术专业论文.docx...
  2. 《信心——是什么?导致什么?》_司布真
  3. numpy相关介绍和基本操作
  4. 程序员编程入门必知!程序员需要学什么
  5. 和平精英显示与服务器断开连接,和平精英网络异常怎么办 网络异常解决方法...
  6. hp ilo 服务器磁盘定位
  7. Android系统体系结构
  8. 岭南的一艘 “海盗船” 出海时扬起了单机游戏的帆
  9. An exception was thrown while activating xxxxController
  10. python中imag是什么意思_Python-在imag中查找主要/最常见的颜色