栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

《机器学习-吴恩达》课程笔记week4

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

《机器学习-吴恩达》课程笔记week4

Motivations Non-linear hypotheses

在之前的线性拟合和逻辑拟合的基础上,当n的规模变得很大,计算问题的代价将会变得很大,并且此时问题会过于复杂,很可能会导致欠拟合,所以需要神经网络来解决这个问题。

Neural Networks Model Representation I

一个简单的三层神经网络模型可以分为:input layer、hidden layer、output layer

其中input layer相当于之前的X,output layer相当于y,hidden layer可以有多个层级。

Model Representation II

hidden layer每个元素的计算表达式为: 

右上角的角标:代表变量属于第i层layer

右下角的第一个角标:代表第i层layer中第j个结点(第i层中的第j个feature)

右下角的第二个角标:代表第i-1层layer中第k个结点(对应第i-1层的第k个feature)

显然易见的规模为第i层特征个数j*第i-1层特征个数k。

此处的g和之前的sigmoid函数是同一含义,通过多层神经网络能够实现对X中任意元素的逻辑表达式的组合运算。

通过把g的一行自变量简写为z向量,可以简化为以下表达形式:

注意,在通过计算得到第i层的结点后,需要补上一列=1向量作为下一层的输入结点。所以可以推得用来计算第j+1层的第j层的系数: 其元素个数如左式,Sj是j层的节点个数,Sj加上一是上文提到的为1的特征。

Applications Examples and Intuitions I

一层layer可以用来模拟and、or

 计算g(z)可以参考下图作为近似的结果:

Examples and Intuitions II

通过两层可以得到XNOR

ex-3 示例代码
%%% 一些示例代码:
%% ex3.m:
% 根据输入的常数or矩阵的第一个数字m,生成一个随机序列,即是1,2,3,...,m的序列乱序
sel = randperm(size(X, 1));
sel = sel(1:100);

% 计算正确率:pred == y 返回的是大小为m*1的logical类型向量、double类型转换、mean计算平均值
mean(double(pred == y)) * 100;

%% sigmoid.m:
% 计算sigmoid
% help exp :Compute 'e^x' for each element of X. 可以直接把矩阵每个元素都算一遍,很快捷
g = 1.0 ./ (1.0 + exp(-z));

% 第三个参数为2时,得到矩阵tmp_y的每一行最大值;为1时,得到矩阵每一列最大值
% 单个返回值只返回最大的value,两个返回值返回value和下标
[value, p] = max(tmp_y, [], 2);

%% lrCostFunction.m
% 用end指代z的末尾行,非常好用
sum(z(2:end).^2;

%% displayData.m:
% exist (NAME, TYPE) var检查参数
if ~exist('example_width', 'var') || isempty(example_width) 
	example_width = round(sqrt(size(X, 2)));
end

% 图像拼接逻辑:todo
遇到问题
  1. 在ex3_nn模块得到的predict准确率远远低于one-vs-all逻辑拟合,并且在debug过程中已经看到了部分数据范围超过了[0, 1],但当时并未在意。 解决:写预测函数时,忘记套上上sigmoid部分,导致数据计算错误。
  2. 对于ex3模块,featureNormalize和iter、是否选用fmincg对数据的影响:
    1. 如下图所示,为使用fmincg时采用范围为[25, 200]的MaxIter得到的图像,显然取maxiter为50最为合适
    2. 当取MaxIter为50时,下图为采用featureNormalize(红色)和不采用(蓝色)得到的图形和精确度:

             虽然课程指引并无提到,但是可以看出经过featureNormalize的数据精确度有所提升

  3. 在本次作业featureNormalize时遇到输出矩阵包含#NAN的情况,有一整个列值都相等导致其除数std为0,我在这里把含有nan的列置为原来的值处理,感觉应该有更好的处理方式。

  4. octave ctrl+r 快捷键段落注释,ctrl+shift+r解除注释
to-deal-with
  1. fmincg函数构成

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/866838.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号