深度学习随记

本文介绍了K近邻算法的工作原理,包括其懒学习特性、分类过程、选择K值的重要性以及面对样本不平衡问题的解决方案。同时,讨论了深度学习中的线性分类、损失函数、正则化和优化方法,如SVM、softmax分类器和梯度下降法在模型训练中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

K近邻算法:设定一个K值,如果目标距离最近K个点,则认为目标点与周围的K个点是一类别。

对于未知类别属性数据集中的特点的点:

  1. 计算已知类别数据集中的点与当前点的距离
  2. 按照距离依次排序
  3. 选取与当前点距离最小的K和点
  4. 确定前K个点所在类别的出现概率
  5. 返回前K点出现频率最高的类别作为当前点预测分类
     
    概述:
    KNN算法方法较为简单有效,是一种lazy-learning算法
    分类器不需要使用训练集进行训练,训练时间复杂度为0
    KNN分类计算复杂度和训练集中的文档数目成正比,也就是说,如果训练集中文档总数为n,那么KNN的分类时间复杂度时间复杂度为0(n)
     
    K值得选择,距离度量函数和分类决策规则是该算法的基本三个要求
     
    问题:该算法在分类是有个主要的不足是,当样本不平衡是,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K各邻居中大样本容量的样本占多数
     
    解决:不同的样本给予不同的权重项
     
    数据库样例:CIFAR-10 10类标签  50000个训练集  10000个测试数据  大小32*32
     
     
    超参数与交叉验证
    距离称为超参数。欧氏距离:两点相减平方再根号。曼哈顿距离:绝对值两个样本点相减。
    交叉验证:将数据分为多份训练集比如分为5份和一份测试集。然后将其中一份比如5作为验证集,用其他4份来验证。再用4作为验证集,其他4份做测试。进行次迭代,求和再平均。以此来调节参数。testdata是最终评估模型。可以使数据集更加平均。
    但是再用K近邻时把背景考虑进来,距离会很近,计算的结果不准确。
     
    线性分类
     
    对于输入加入一些权重参数。得到得分值。如给一幅图像,32*32*3 =3072个像素点
    将其拉伸为一个列向量。想得到10个类别的权重:像素矩阵x乘以W权重+b。有3072个W行向量,与输入相乘,得到每个类别的得分值。b=10*1,

 

 


比较最后得分大小,那个得分值最高,就是属于这个类别的。可以看出预测错误。
 
损失函数

 

 

线性分类的方式其实就是根据这个函数,将画的线将不同类别划分出啦。相当于先找出分类边界,通过这个权重参数W找出这个线的倾斜程度,通过b找出与Y轴的焦点,最后得出划分的区域。

得分值效果不好,预测错误时,需要改正,要有一个评判标准。

SVM损失函数:

比较0 (错误得分-正确的分+1)的大小。比0大就认为有损失,比0小就认为没有损失。

 

 

 

对于一个模型的测试,需要许多次测试,就有很多损失函数。要进行求和再平均,刨除样本的个数对样本结果的影响。

 

正则化惩罚项

对于w1w2来说,和x矩阵相乘得分值都是1,但是w1只关注x的一个像素点,而w2就分布比较均匀。会均匀考虑到每个像素点。

损失函数加入正则化惩罚项。惩罚就是惩罚权重参数。

计算w的平方项,就是惩罚项。

损失函数终极版:

 

softmax分类器

 

SVM输出的是一个得分值。

softmax输出的是一个概率值。

 

 将得分值映射到e的次幂将小的值映射成一个大一点的数3.2->24.5,将一个大一点的数映射成非常大的数5.1->164.0,将一个负数映射成一个小数-1.7->0.18,归一化映射到0-1之间的概率,预测越好,概率越接近于1,损失值越小与,概率越接近于0越不正确,损失函数越大。符合log函数的分布,所以取对数映射计算损失值,再加上负号,映射到正数上。目的是将概率值映射成差异很大的情况。

最优化解释

优化是不断地找到最好的值。例如:梯度下降法。

BP算法通过输入前向传播到loss值,然后通过反向传播,进行优化。通过loss值进行评估。

梯度下降:比如下山,每次走一步都沿着坡走,能找到一个最好的方向。

通常使用BP算法时,不是迭代一张图像,而是迭代多张,要看计算机承受的负载量。

数据量一般在Bachsize是64,128,计算机性能一般的话16,32。

data_batch是从数据集中一次性取出256个数据,组成data_batch。

训练网络,得出的横坐标 为epoch值。

epoch值:比如4000张图片整个跑完一次得出一个epoch值。就是迭代完所有数据得出一个epoch值。

一次迭代:取64张图像组成batch,一次迭代就是只完成了这64张图像的前向传播加反向传播的过程。跑一次batch得出的结果。

学习率

 能够让模型向好的方向去学,通过梯度下降法进行求解,一次学多大呢?就是用学习率来表示。

  W=W-\Delta W\cdot LR   LR就是学习率

通过小的学习率和大的迭代次数进行训练模型。

学习率:

反向传播

怎样由一个loss值来得出我们的权重值呢?

神经网络由前向传播和反向传播组成。

前向传播:有一个数据得到一个得分值。

反向传播:由得分值算出LOSS值后,一步一步往回传,得到什么样的W该更新,什么样的W该更新多大的力度。

最优化就是在反向传播中体现出来的。反向传播就最重要的是更新W参数。

传播是一层一层的传播的,不能一步到位。

计算时,符合链式法则。求导,进行判断参数对最终loss值得权重。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值