(202302)统计学习方法习题实战TASK2 感知机

TASK2: 第二章 感知机

本次参加的是DataWhale组织的2023年2月份学习计划。学习内容为李航老师的《统计学习方法(第二版)》的第一到六章。习题的解答开源在datawhale的GitHub账号GitHub - datawhalechina/statistical-learning-method-solutions-manual: 《统计学习方法》(第二版)习题解答,在线阅读地址:https://datawhalechina.github.io/statistical-learning-method-solutions-manual

新的了解与想法

这一章相对第一章对我来说要好理解许多,感知机作为后续许多算法的基础,我之前多少还是有一些了解的。

  • 首先需要明确的是,感知机是一种线性分类模型,属于判别模型。
    • 当训练数据集是线性可分的时候,感知机学习算法的原始形式是收敛的。
    • 显然(但需要经过严格地证明),在这种情况下,感知机学习算法得到的超平面并不是唯一的。我们如果添加约束条件从而得到唯一的超平面,就是支持向量机SVM。 
    • 如果将感知机用于线性不可分的数据集,感知学习算法不收敛,迭代结果就会发生震荡。 
  • 感知机的学习策略
    • 通过样本点到超平面的“距离”之和作为损失函数,通过随机梯度下降法对参数进行优化从而使得损失函数减小。
      • 范数:范数就是为了度量方便而定义出的一个概念。主要就是面对复杂空间和多维数组时,选取出一个统一量化的标准,以方便度量和比较。
      • 身为数学基础很弱欸的人,我一开始对于使用一个x即可表达在空间中的一个点表示疑惑。但是后来通过不严谨的臆想考虑到空间的信息应该是被w这个权重值的向量表达了,因此可以使用一个x仅仅表达它在“一条线上”的位置。也就是和数轴差不多的意思。
      • 数学基础很弱欸指只学了微积分上甚至还没有经过期末考试的检验,其余的都是零零散散了解到的。
  • 感知机学习算法
    • 感知机学习算法的原始形式,使用的就是w和b来对超平面进行表达。而η表示学习率。
      • 学习率就相当于步长,当发现误分类点时,向正确分类移动一次的步长。
      • 以二维平面为例,w的改变相当于对超平面(这里就是直线)的角度进行改变,b的改变相当于对超平面进行平移。
    • 感知机学习算法的对偶形式,通过对感知机原始形式的学习过程进行分析,可以得到最终的w和b的产生原因,即w是w+ηyx,b是b+ηy。因此这里直接使用
    • f(x)=sign(\sum_{j=1}^{N}a_{j}y_{j}x_{j}\cdot x+b)
    • 对偶形式中训练实例仅以内积的形式出现,为了方便,可以预先将训练集中实例间的内积计算出来并以矩阵的形式存储,这个矩阵就是所谓的Gram矩阵。

习题

2.1验证感知机为什么不能表示异或

解答思路:

  1. 列出异或函数(XOR)的输入和输出;
  2. 使用图例法证明异或问题是线性不可分的;
  3. 使用反证法证明感知机无法表示异或。

2.2模仿例题构建从训练数据集求解感知机模型的例子

解答思路:
  按照书中第38~39页感知机学习算法2.1,编写代码并绘制分离超平面

下面的代码并不严格按照书上的格式,实不相瞒,用chatGPT写的,自己做了一些修改。

因为最近在了解rust,所以是用rust实现的。没有用rust的数组库ndarray库,直接用的rust的vector。

fn perceptron(inputs: &[f64], weights: &[f64], bias: f64) -> f64 { let mut sum = 0.0; //距离,初始化for (input, weight) in inputs.iter().zip(weights.iter()) { sum += input * weight; } sum += bias; //求当前点距离let activation = 1.0 / (1.0 + (-sum).exp()); //激活let output = if activation > 0.5 {1.0} else {0.0}; //通过距离激活后的大小判断是否为误分类点output }fn train_perceptron(inputs: &[f64], targets: &[f64], weights: &mut [f64], bias: &mut f64, learning_rate: f64) { let error = targets[0] - perceptron(inputs, weights, *bias); *bias += error * learning_rate; for (i, weight) in weights.iter_mut().enumerate() { *weight += inputs[i] * error * learning_rate; //更新权重} }fn main() { let inputs = vec![1.0, 2.0, 3.0]; let targets = vec![1.0]; let mut weights = vec![0.1, -0.2, 0.3]; let mut bias = 0.0; let learning_rate = 0.01; for _ in 0..100 { train_perceptron(&inputs, &targets, &mut weights, &mut bias, learning_rate); } let output = perceptron(&inputs, &weights, bias); println!("Output: {}", output); }
/*
简直折磨
*/

2.3证明样本集线性可分的充要条件是正实例点集所构成的凸壳与负实例点集所构成的凸壳互不相交

这是超平面分离定理来着吧。

身为一个数学基础很弱的人,我用不严谨但通俗的语言描述这个问题。在二维平面中,点集所构成的凸壳相当于凸多边形,因此问题转变成证明两个凸多边形可以被一条直线分开与这两个凸多边形不相交是充要条件。由于证明过程并不严谨,下面的结论中并不会以“凸壳”进行表述,仅供自己理解。

充分性:证明两个凸多边形可以被一条直线分开,则这两个凸多边形不相交

        反证法,如果这两个凸多边形相交则必有其边线段相交,则其中一个多边形的顶点在另一个多边形内,无法用一条直线分开。与两个凸多边形可以被一条直线分开矛盾。

        故两个凸多边形可以被一条直线分开,则这两个凸多边形不相交。

必要性:证明两个凸多边形不相交,则这两个凸多边形可以被一条直线分开

        找到一组其中一个多边形的点离另一个多边形的线距离最小的点线组合。过该点作平行于该线段所在直线的直线,即可得到其中一个解。这种操作方法应该同样适用于三维空间,但更高的肯定需要数学的表达。

看了第2章 感知机 (datawhalechina.github.io)习题解答,我感到不是很懂,符号认不全,查资料后认识符号与基本的含意了,能理解计算过程,但仍然云里雾里。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/38322.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谈谈会话管理

客户端和服务器之间进行数据传输遵循的是HTTP协议, 此协议属于无状态协议(一次请求对应一次响应, 响应完之后断开连接), 服务器是无法跟踪客户端的请求, 通过cookie技术可以给客户端添加一个标识, 客户端之后发出的每次请求都会带着这个标识从而让服务器识别此客户端, 但由于co…

基于任务型对话的医疗诊断 Task-oriented Dialogue System for Automatic Diagnosis

这项基于任务型对话的自动医疗诊断工作来自复旦大学黄萱菁团队,发表在ACL Short 2018(Task-oriented Dialogue System for Automatic Diagnosis)。初步看该工作和NIPS RL workshop 2016上的神经症状检查器的工作思路是相似的,将AI…

SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础》提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/signalr/overview/getting-started…

论文阅读报告:A Neural Approach to Pun Generation

论文阅读报告:A Neural Approach to Pun Generation 这篇报告是课上老师留下的作业,要求我们读一读论文找找感觉,顺便把论文的内容写一写,也算是我第一次认真完整地精读了一篇论文。由于水平有限,翻译理解的内容有拙劣…

【论文阅读】HRNetV2论文笔记

Titile: High-Resolution Representations for Labeling Pixels and Regions 论文地址:https://arxiv.org/pdf/1904.04514.pdf 代码地址:https://github.com/HRNet/HRNet-Object-Detection 1. 概 述 1. 概述 1.概述 基于深度学习的特征表示在计算机视觉…

表情识别综述论文《Deep Facial Expression Recognition: A Survey》中文翻译

本篇博客为论文《Deep Facial Expression Recognition: A Survey》的中文翻译,如有翻译错误请见谅,同时希望您能为我提出改正建议,谢谢! 论文链接:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber9039…

【论文阅读002】Generating Natural Language Adversarial Examples through ProbabilityWeightedWord Saliency

论文地址:Generating Natural Language Adversarial Examples through Probability Weighted Word Saliency - ACL Anthology,发表于第57届计算语言学协会年会论文集(2019年7月28日至8月2日)的第1085-1097页。 目录 论文主要工作 已有的工作 创新性 …

【论文笔记】Generating Natural Adversarial Examples

Generating Natural Adversarial Examples. Zhengli Zhao, Dheeru Dua, Sameer Singh. ICLR 2018. decision[pdf][code] 文章目录 贡献框架解释样本实验结论 贡献 框架 解释样本 举例说明(使用算法1) 实验 结论 要点: 引入 i n v e r …

【学习笔记】《Science Research Writing for Non-Native Speakers of English》Unit 1:Introduction 引言

文章目录 1.1 Structure 结构1.2 Grammar and Writing Skills 语法和写作技巧1.2.1 Tense pairs 时态对1.2.2 Signalling language 信号语言1.2.3 Passive/Active 主动 / 被动 1.3 Writing Task: Build a Model 写作任务:建立模型1.3.1 Building a model 建立模型1.…

惊现一篇韩语论文引用了我的博客

在google.cn搜索【"http://blog.csdn.net/pennyliang"】 找到了一个韩语论文引用了我的博客,很感动啊。 链接如下: http://www.munsam.info/?modulefile&actprocFileDownload&file_srl3315&sid62367e57f4c36ec09e2a6f1d3ca7176…

【学习笔记】《Science Research Writing for Non-Native Speakers of English》Unit 3: Results 结果

文章目录 3.1 Structure 结构3.2 Grammar and Writing Skills 语法和写作技巧3.2.1 Sequence 序列3.2.2 Frequency 频率3.2.3 Quantity 数量3.2.4 Causality 因果关系 3.3 Writing Task: Build a Model 写作任务:建立模型3.3.1 Building a model 构建模型3.3.2 Key …

如何去做短视频?

短视频的火爆信任咱们都是众所周知,不管是个人,仍是团队,都不得不在短视频上捞得一金。自己也想做,只可惜自己不会编排视频。短视频应该怎么制造?还不会编排的小伙伴就必定得好好学习了。 ​ 短视频怎么制造&#xff…

计算机图解教程视频教程,新手怎么制作短视频教程?视频处理的图文步骤

原标题:新手怎么制作短视频教程?视频处理的图文步骤 不管是任何行业的新手,一开始都是不懂的,不知道从何下手没有思路的,短视频制作的新手也是如此,他们是不知道新手怎么制作短视频的教程有哪些的。因此小编…

如何快速上手制作高质量短视频?

​很多人看到别人在视频平台上分享自己的生活和才华,自己也想尝试一下,却不知道如何快速上手制作高质量短视频。 其实制作视频并没有你想象的那么难,只要掌握一些必要的条件,努力练习即可。 一、设备选择方面 对于新手来说不建议…

短视频如何制作?教程分享,只需要四个步骤

短视频如何制作?教程分享,只需要四个步骤 现下来看,短视频仍旧是非常受人欢迎的,甚至很多品牌也都开始制作起了短视频,想要让更多人看到自己。而个人短视频作者也越来越多,有的是单纯的想要通过短视频记录…

玩转这些视频制作软件,让你成为短视频高手

新手想尝试做短视频?那这些软件你一定要知道,帮你轻松驾驭视频制作,高效率工作! 视频制作工具 剪映 抖音官方剪辑工具,几乎能满足日常的短视频后期需要,同时,它里面还有超多的素材可供使用&am…

Thinphp集成抖音SDK

Thinphp集成抖音SDK 第一步:下载抖音官方SDK第二步:将SDK导入第三步:安装guzzlehttp依赖第四步:接口调用常见问题整理 由于抖音官方SDK相关教程太少, 所以本着 前人种树后人乘凉 的精神,写下本篇博客 第一…

抖音项目实现2: api层的实现 | 青训营笔记

目录导航: 1. 测试user微服务 2. api层的实现 3. github仓库地址1.测试user微服务 接上一篇实现了user微服务,并将服务注册到了etcd上。测试为服务业编写一个客户端发现服务并进行rpc调用,新建douyin/test/userRpc.go如下: pack…

抖音最新抓包方案

可以通过hook java层如下图所示的地方,dy默认走的是quick协议,但是为了兼容更多版本的手机,有一个降级操作,毕竟担心cronet低版本适配不好,所以可以通过hook这个方法来使其强制降级到Http协议。 frida脚本:…