下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
感知机的损失函数与梯度(零基础易懂版)一、先回顾感知机的基本结构感知机本质是二分类线性模型,核心功能是对输入数据做“是/否”判断(比如判断图片里是猫/不是猫)。1.感知机的数学表达式对于单个样本(x,y):输入:x=(x1,x2,...,xn)(n个特征),偏置项b(可看作x0=1对应的权重)权重:w=(w1,w2,...,wn)线性输出:z=w⋅x+b=∑i=1nwixi+b激活函数(阶跃函数):f(z)={1,−1,z≥0z<0(标签y∈{1,−1})2.感知机的核心目标找到一组最优的w和b,让感知机对所有样本的预测结果y^=f(w⋅x+b)与真实标签y一致。二、感知机的损失函数(为什么这么设计?)1.直观的错误分类损失(不适合求导)最直接的想法是统计“分类错误的样本数”作为损失:L=错误分类的样本数量但这个损失函数是离散的、不可导的(样本数是整数,没有连续的梯度),无法用梯度下降优化,因此需要设计“连续可导”的替代损失。2.感知机的标准损失函数(合页损失的简化版)感知机的损失函数基于误分类样本到决策边界的距离设计,核心公式:L(w,b)=−∑xi∈Myi(w⋅xi+b)M:所有误分类样本的集合(只有误分类样本才贡献损失,正确分类样本损失为0)为什么是这个形式?对于误分类样本,必然满足yi(w⋅xi+b)<0(比如真实标签yi=1,但预测z<0,则1×z<0),因此前面加负号后,损失为正,且误分类越严重(z离0越远),损失越大。3.简化版(合并偏置项)为了计算方便,通常把偏置b合并到权重中:令w′=(w1,w2,...,wn,b),x′=(x1,x2,...,xn,1),则w⋅x+b=w′⋅x′,损失函数简化为:L(w′)=−∑xi′∈Myi(w′⋅xi′)三、感知机损失函数的梯度(核心计算)梯度下降的核心是求损失函数对权重的偏导数,然后沿梯度反方向更新权重。1.单个误分类样本的梯度先对单个误分类样本求梯度(批量梯度下降的基础),损失函数简化为:L=−y(w⋅x+b)对权重w求偏导:∂w∂L=−yx对偏置b求偏导:∂b∂L=−y2.批量误分类样本的梯度如果考虑所有误分类样本,梯度是单个样本梯度的求和:∂w∂L=−∑xi∈Myixi∂b∂L=−∑xi∈Myi3.权重更新规则(梯度下降)梯度下降的核心是“沿梯度反方向更新权重”,学习率为η(η∈(0,1)):w←w+η∑xi∈Myixib←b+η∑xi∈Myi简化版(随机梯度下降,每次更新单个样本):实际工程中常用随机梯度下降(SGD),每次只选一个误分类样本更新:w←w+ηyixib←b+ηyi(这就是感知机的原始更新规则,本质是梯度下降的简化版)四、代码示例(手动实现感知机梯度下降)下面用Python实现感知机的损失计算和梯度更新,直观理解过程:python运行importnumpyasnpclassPerceptron:def__init__(self,learning_rate=0.1,max_iter=100):self.lr=learning_rate#学习率self.max_iter=max_iter#最大迭代次数self.w=None#权重self.b=0#偏置#计算线性输出z=w·x+bdef_forward(self,x):returnnp.dot(x,self.w)+self.b#计算损失函数值(仅针对误分类样本)def_loss(self,X,y):loss=0#遍历所有样本,只累加误分类样本的损失forxi,yiinzip(X,y):ifyi*self._forward(xi)<0:#误分类判断loss-=yi*self._forward(xi)returnloss#训练感知机(随机梯度下降)deffit(self,X,y):n_samples,n_features=X.shapeself.w=np.zeros(n_features)#初始化权重为0for_inrange(self.max_iter):misclassified=0#统计误分类样本数#遍历每个样本(随机梯度下降)forxi,yiinzip(X,y):#误分类则更新权重和偏置ifyi*self._forward(xi)<0:#梯度下降更新:w=w+η*y_i*x_iself.w+=self.lr*yi*xi#梯度下降更新:b=b+η*y_iself.b+=self.lr*yimisclassified+=1#计算当前损失current_loss=self._loss(X,y)print(f"迭代次数{_+1}|误分类数{misclassified}|损失值{current_loss:.2f}")#无错分样本则提前终止ifmisclassified==0:print("所有样本分类正确,提前终止训练")break#预测defpredict(self,X):returnnp.where(self._forward(X)>=0,1,-1)#----------------------测试代码----------------------#构造简单的二分类数据集(线性可分)X=np.array([[3,3],[4,3],[1,1]])y=np.array([1,1,-1])#初始化并训练感知机perceptron=Perceptron(learning_rate=0.1,max_iter=10)perceptron.fit(X,y)#测试预测print("\n最终权重w:",perceptron.w)print("最终偏置b:",perceptron.b)print("预测结果:",perceptron.predict(X))代码运行结果(示例):plaintext迭代次数1|误分类数3|损失值4.00迭代次数2|误分类数1|损失值0.80迭代次数3|误分类数0|损失值0.00所有样本分类正确,提前终止训练最终权重w:[0.20.2]最终偏置b:-0.4预测结果:[11-1]代码关键解释:损失计算:_loss函数只对误分类样本累加损失,符合感知机损失函数定义;梯度更新:误分类时执行self.w+=self.lr*yi*xi和self.b+=self.lr*yi,本质是梯度下降(梯度为-y_ix_i,反方向更新即加y_ix_i);终止条件:当无错分样本时,损失为0,训练终止。五、关键注意事项感知机的局限性:仅能处理线性可分数据(如果数据线性不可分,损失函数无法收敛到0,迭代会一直进行);学习率的选择:η过大会导致权重更新震荡,过小会导致收敛过慢(通常取0.01~0.1);梯度的意义:梯度的方向是损失函数上升最快的方向,因此权重沿梯
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 太空站生命支持工程师考核表
- 售后服务反馈处理结果通知3篇范文
- 通信技术项目经理网络优化及项目完成度KPI考核表
- 家电企业产品召回预案
- 2026年教育学专业教育心理学与课程设计考试试卷
- 2026年事业单位教师招聘语文科目真题汇编及冲刺押题
- 环保项目推广专员KPI考核表
- 催办2026年Q1季度营销活动推进函(7篇)
- 2026年人力资源管理师综合知识冲刺押题
- 2026年护士临床技能操作考核训练试卷
- 2026年四川交通工程职称评审理论测试(道路与桥梁工程-桥梁工程)(中、高级)冲刺试题及答案
- 写字姿势和执笔方法
- 肿瘤患者的心理护理:营养与心理支持
- 政府专职消防文员理论题库有答案
- 研究会内部管理制度
- 七年级上册 第四单元 写作《思路要清晰》课件 (共23张)
- 舞台剧小剧场运营手册
- 燃气施工中常见问题及解决措施
- 档案数字化加工保密管理规定制度
- 2026年中国航空传媒有限责任公司市场化人才招聘备考题库及答案详解(易错题)
- 《环境科学与工程导论》课件-第8章土壤污染及其控治
评论
0/150
提交评论