1:softmax回归

当p(y|x,theta)满足多项式分布,通过GLM对其进行建模就能得到htheta(x)关于theta的函数,将其称为softmax回归。

教程中已经给了cost及gradient的求法。须要注意的是一般用最优化方法求解參数theta的时候,採用的是贝叶斯学派的思想,须要加上參数theta。

 
softmax回归 习题的任务就是用原有的像素数据集构建一个softmax回归模型进行分类。准确率略低 92.6%,。
而自我学习是用5~9之间的数据集当做无标签的数据集,然后构建一个稀疏自编码器,然后将0~4中一部分有标签的数据集通过稀疏自编码器提取特征,然后用此特征构建一个softmax回归模型,然后针对一部分有标签的数据集进行预測。 

习题答案:

(1) 数据载入——————代码已给

(2) %% STEP 2: Implement softmaxCost  得到计算cost和gradient

M = theta*data;  % M的每一列就是一个样本所相应的thta*data(:, i)的值
M = bsxfun(@minus, M, max(M, [],1)); %减去每列的最大值以防止溢出
M = exp(M); %
p = bsxfun(@rdivide, M, sum(M)); %得到概率矩阵 cost = -1/numCases .* sum(groundTruth(:)'*log(p(:))) + lambda/2 *sum(theta(:).^2); % cost function
thetagrad = -1/numCases .* (groundTruth - p) * data' + lambda * theta; % grad

(3)gradient check ———代码已给

(4) Learning parameters ----代码已给出训练得到最佳的參数theta  通常採用L-BFGS进行迭代得到最佳參数。L-BFGS眼下被觉得是最有效的无约束优化问题。

(5)測试

[nop, pred] = max(theta * data); % nop存放的是每列的最大值。pred存放的是该最大值所在的行号

2:自我学习和无监督特征学习

过程是这样子的:原始数据一部分是有标签。一部分是没有标签的,我们使用无标签的数据去训练得到一个稀疏自编码器(AutoEncoder),然后我们将一部分有标签的数据输入该编码器,并将第二层hidden layer的激励值作为新的特征来取代(合并)原有的特征,用新的特征及其标签训练一个softmax回归模型。然后将剩余的有标签数据作为測试集(注意这里的測试输入softmax中的数据是稀疏编码器第二层的激励值)。

注意:这里没有对数据进行白化的预处理,有时间会做下。比对下效果。

习题答案——最后的准确率是98.189306%

(1) %  Find opttheta by running thesparse autoencoder on

% unlabeled Training Images

options.Method = 'lbfgs'; % Here, we use L-BFGS to optimize our cost
% function. Generally, for minFunc to work, you
% need a function pointer with two outputs: the
% function value and the gradient. In our problem,
% sparseAutoencoderCost.m satisfies this.
options.maxIter = 400; % Maximum number of iterations of L-BFGS to run
options.display = 'on'; [opttheta, cost] = minFunc( @(p) sparseAutoencoderCost(p, ... %通过L-BFGS得到最佳的cost与gradient
inputSize, hiddenSize, ...
lambda, sparsityParam, ...
beta, unlabeledData), ...
theta, options);

(2) Extract Features from the Supervised Dataset

b1 = repmat(b1, 1, size(data, 2));
Z1 = W1*data + b1;
activation = sigmoid(Z1);

(3) %% STEP 4: Train the softmax classifier

lambda = 1e-4;                                                   %% lambda设置的过大 效果没有达到98%
numClasses = numLabels;
softmaxModel = softmaxTrain(hiddenSize, numClasses, lambda, ... %% 注意这里不再是trainData,而是在稀疏自编码算法中提取的第二层结点的激励值作为新的特征值
trainFeatures, trainLabels, options);

(4)測试

[pred] = softmaxPredict(softmaxModel, testFeatures);   %%% 对结果进行预測

UFLDL教程笔记及练习答案三(Softmax回归与自我学习***)的更多相关文章

  1. UFLDL教程笔记及练习答案二(预处理:主成分分析和白化)

    首先将本节主要内容记录下来.然后给出课后习题的答案. 笔记: :首先我想推导用SVD求解PCA的合理性. PCA原理:如果样本数据X∈Rm×n.当中m是样本数量,n是样本的维数.PCA降维的目的就是为 ...

  2. UFLDL教程笔记及练习答案五(自编码线性解码器与处理大型图像**卷积与池化)

    自己主动编码线性解码器 自己主动编码线性解码器主要是考虑到稀疏自己主动编码器最后一层输出假设用sigmoid函数.因为稀疏自己主动编码器学习是的输出等于输入.simoid函数的值域在[0,1]之间,这 ...

  3. UFLDL深度学习笔记 (二)SoftMax 回归(矩阵化推导)

    UFLDL深度学习笔记 (二)Softmax 回归 本文为学习"UFLDL Softmax回归"的笔记与代码实现,文中略过了对代价函数求偏导的过程,本篇笔记主要补充求偏导步骤的详细 ...

  4. Deep Learning 13_深度学习UFLDL教程:Independent Component Analysis_Exercise(斯坦福大学深度学习教程)

    前言 理论知识:UFLDL教程.Deep learning:三十三(ICA模型).Deep learning:三十九(ICA模型练习) 实验环境:win7, matlab2015b,16G内存,2T机 ...

  5. Deep Learning 6_深度学习UFLDL教程:Softmax Regression_Exercise(斯坦福大学深度学习教程)

    前言 练习内容:Exercise:Softmax Regression.完成MNIST手写数字数据库中手写数字的识别,即:用6万个已标注数据(即:6万张28*28的图像块(patches)),作训练数 ...

  6. ufldl学习笔记和编程作业:Softmax Regression(softmax回报)

    ufldl学习笔记与编程作业:Softmax Regression(softmax回归) ufldl出了新教程.感觉比之前的好,从基础讲起.系统清晰,又有编程实践. 在deep learning高质量 ...

  7. ufldl学习笔记与编程作业:Softmax Regression(vectorization加速)

    ufldl学习笔记与编程作业:Softmax Regression(vectorization加速) ufldl出了新教程,感觉比之前的好.从基础讲起.系统清晰,又有编程实践. 在deep learn ...

  8. UFLDL深度学习笔记 (三)无监督特征学习

    UFLDL深度学习笔记 (三)无监督特征学习 1. 主题思路 "UFLDL 无监督特征学习"本节全称为自我学习与无监督特征学习,和前一节softmax回归很类似,所以本篇笔记会比较 ...

  9. UFLDL教程(四)之Softmax回归

    关于Andrew Ng的machine learning课程中,有一章专门讲解逻辑回归(Logistic回归),具体课程笔记见另一篇文章. 下面,对Logistic回归做一个简单的小结: 给定一个待分 ...

随机推荐

  1. 剑指Offer(书):调整数组顺序使奇数位于偶数前面

    题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. public void ...

  2. 查看zookeeper管理的solrcloud配置文件

    进入zookeeper/bin目录下 连接zookeeper sh zkCli.sh -server localhost:2181 查看 ls /configs 结果如下 [zk: localhost ...

  3. Ubuntu 16.04 LTS上git提交出现警告Warning: Permanently added 'github.com,52.74.223.119' (RSA) to the list of known hosts. 的解决方法

    问题: Ubuntu 16.04 LTS执行 git pull时总会出现以下警告: Warning: Permanently added 'github.com,52.74.223.119' (RSA ...

  4. Pyhton开发:Python基础杂货铺

    if 语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. Python中if语句的一般形式如下所示: if condition_1: stateme ...

  5. Python之窗口操作之find_window,set_foreground等

    在自动化测试过程中,常常需要模拟按键的操作,比如像窗口发送一个按键,实现鼠标点击的功能,在上一篇文章中,我和大家讨论了python文件生成为不依赖与python库的exe文件的方式(需要了解的朋友戳这 ...

  6. ACM程序设计选修课——1081: 堆(BFS)

    1081: 堆 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 26  Solved: 9 Description Input Output Sampl ...

  7. BZOJ 3939 [Usaco2015 Feb]Cow Hopscotch ——线段树 CDQ分治

    显然dp[i][j]=ps[i-1][j-1]-sigma(dp[k<i][l<j],a[i][j]=a[k][l]) 考虑对于每一种颜色都开一颗区间线段树,但是空间不够. 所以我们可以动 ...

  8. JS return false 与 return true

    在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为.例如,默认情况下点击一个<a>元素,页面会跳转到该元素href属性指定的页. Return False 就相当于终止符 ...

  9. Spring-IOC源码解读1-整体设计

    1. SpringIOC提供了一个基本的javabean容器,通过IOC模式管理依赖关系,并通过依赖注入和AOP增强了为javabean这样的pojo对象赋予事务管理,生命周期管理等基本功能.2. S ...

  10. VMware虚拟机CentOS7 - VMnet8网络配置及常见问题解决

    本文环境 物理机OS: Windows10 专业版 虚拟机平台: VMware Workstation 14 虚拟机OS: CentOS 7 配置步骤 一. 查看物理主机的网络配置信息 主要是找到可以 ...