Note--机器学习概念

本文探讨了交叉验证的两种方法——简单交叉验证和K折交叉验证,以及上采样和下采样的图像处理应用。同时,深入解析了注意力机制,包括多头注意力和Transformer中的Self-Attention。讨论了梯度消失与爆炸问题,以及Softmax和CrossEntropy在机器学习中的关键作用。

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

 

 

 

------------------------------------------------------------------------------------------------

交叉验证 解释说明

        交叉验证,只是在train和validation之间的,仍然需要留一部分作为test

  • 简单交叉验证:
    • 随机将数据分为两组一组训练、一组作为验证集
    • 利用训练集训练分类器,然后利用验证集验证模型,记录最后分类准确率作为此分类器的性能指标
      • 好处: 处理简单,只需要随机把原始数据分成两组即可
      • 坏处:没达到理想,由于是随机将原始数据分组,所以最后验证集分类准确率的高低与分组有很大关系,结果不具有说服力
  • K-折交叉验证(K-flod Cross Validation 即K-CV)以10折为例
    • 将原始数据分为十份,轮流将其中9份作为训练数据,一份作为测试数据,进行实验,每次实验都会得出相应的正确率
    • 10次的结果的正确率的平均值作为对算法精度的估计,一般还需要进行多次10折交叉验证,例如10次10折交叉验证,再求均值,作为对算法准确性的估计

                                    

sklearn代码

from sklearn.model_selection import KFold

import numpy as np

X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])

y = np.array([1, 2, 3, 4])

kf = KFold(n_splits=2)

for train_index, test_index in kf.split(X):

            print('train_index', train_index, 'test_index', test_index)

            train_X, train_y = X[train_index], y[train_index]

            test_X, test_y = X[test_index], y[test_index]

 

 

 

------------------------------------------------------------------------------------------------

上采样、下采样

  • 缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个:
    • 1、使得图像符合显示区域的大小;
    • 2、生成对应图像的缩略图。
  • 放大图像(或称为上采样(upsampling)或图像插值(interpolating))的主要目的:
    • 放大原图像,从而可以显示在更高分辨率的显示设备上。对图像的缩放操作并不能带来更多关于该图像的信息, 因此图像的质量将不可避免地受到影响。然而,确实有一些缩放方法能够增加图像的信息,从而使得缩放后的图像质量超过原图质量的。

 

------------------------------------------------------------------------------------------------

Attention机制

                     transformer李宏毅

 

 

 

多头注意力机制

 

从图片中可以看出V K Q 是固定的单个值,而Linear层有3个,Scaled Dot-Product Attention 有3个,即3个多头;

最后cancat在一起,然后Linear层转换变成一个和单头一样的输出值;类似于集成;

多头和单头的区别在于复制多个单头,但权重系数肯定是不一样的

类比于一个神经网络模型与多个一样的神经网络模型,但由于初始化不一样,会导致权重不一样,然后结果集成;(初步理解)

 

 

 

 

 

 

ei用于解决序列的顺序问题,是人为设置的,

    self-attention layer 不是RNN,但能完成rnn功能,且可以同时计算,可用self-attention取代RNN

第二张图这里面的a计算方式不止一种

  • q(query)指和其他项作匹配,
  • k(key)指被匹配项,
  • v(value)是被取出来的信息。此中三个向量的维度一致。
  • 时间序列分析中,q即hidden、cell state等,k和v相等,均为feature值
  • Attention机制的实质其实就是一个寻址(addressing)的过程,如上图所示:给定一个和任务相关的查询Query向量 q,通过计算与Key的注意力分布并附加在Value上,从而计算Attention Value,这个过程实际上是Attention机制缓解神经网络模型复杂度的体现:不需要将所有的N个输入信息都输入到神经网络进行计算,只需要从X中选择一些和任务相关的信息输入给神经网络。
  • 注意力机制可以分为三步:
    • 一是信息输入;
    • 二是计算注意力分布α;
    • 三是根据注意力分布α 来计算输入信息的加权平均。

 

------------------------------------------------------------------------------------------------

梯度消失和梯度爆炸

    在神经网络中,当前面隐藏层的学习速率低于后面隐藏层的学习速率,即随着隐藏层数目的增加,分类准确率反而下降了。

  • 梯度消失:(1)隐藏层的层数过多;(2)采用了不合适的激活函数(更容易产生梯度消失,但是也有可能产生梯度爆炸)
  • 梯度爆炸:(1)隐藏层的层数过多;(2)权重的初始化值过大

------------------------------------------------------------------------------------------------

SoftMax  

            softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类

            假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素的Softmax值就是

                               

 

 

也就是说,是该元素的指数,与所有元素指数和的比值

    这个定义可以说非常的直观,当然除了直观朴素好理解以外,它还有更多的优点

            1.计算与标注样本的差距 在神经网络的计算当中,我们经常需要计算按照神经网络的正向传播计算的分数S1,

                        和按照正确标注计算的分数S2,之间的差距,计算Loss,才能应用反向传播。Loss定义为交叉熵

                                    

 

                        取log⾥⾯的值就是这组数据正确分类的Softmax值,它占的⽐重越⼤,这个样本的Loss也就越⼩,这种定义符合我们的要求

            2.计算时非常方便

                        我们定义选到yi的概率是

                                        

 

 

                        然后我们求Loss对每个权重矩阵的偏导,应用链式法则(中间推导省略)

                                        

 

                        最后结果的形式非常的简单,只要将算出来的概率的向量对应的真正结果的那一维减1,就可以了

------------------------------------------------------------------------------------------------

Cross Entropy

  • 交叉熵(Cross Entropy)是Shannon信息论中一个重要概念,主要用于度量两个概率分布间的差异性信息用来求目标与预测值之间的差距。
  • 在线性回归问题中,常常使用MSE(Mean Squared Error)作为loss函数

                                    

 

这里的m表示m个样本的,loss为m个样本的loss均值。

  • 交叉熵在单分类问题中的使用(这里的单类别是指,每一张图像样本只能有一个类别,比如只能是狗或只能是猫。交叉熵在单分类问题上基本是标配的方法)

                                  

 

 

 

 

 

------------------------------------------------------------------------------------------------

LabelEncoder、OneHotEncoder

        from sklearn.preprocessing import LabelEncoder

        labelencoder = LableEncoder()

        X[:, 0] = labelencoder.fit_transform(X[:, 0])     实际上是分类数据,数据与数据之间无任何关系。

        LabelEncoder: 把[1,5,67,100] 变成[0,1,2,3]

        OneHotEncoder: 把[[1],[2],[3],[4]] 变成

            array([[0., 1., 0., 0.],

                     [0., 0., 1., 0.],

                     [1., 0., 0., 0.],

                     [0., 0., 0., 1.]])

------------------------------------------------------------------------------------------

SimpleRNN 与GRU、LSTM

        SimpleRNN理论上能记住许多时间步之前见过的信息,但实际上它不可能学到这种长期依赖关系,原因在于梯度消失问题

        LSTM是SimpleRNN层的一个变体,增加了一种携带信息跨越多个时间步的方法,从而防止较早的信号在处理过程中消失

                        即允许过去的信息稍后重新进入,从而解决梯度消失的问题

------------------------------------------------------------------------------------------

epochs,batch_size,iterations

                训练集有1000个样本,batchsize=10,那么:

                训练完整个样本集需要:

                        100次iteration,1次epoch。

                具体的计算公式为:

                        one epoch = numbers of iterations = N = 训练样本的数量/batch_size

------------------------------------------------------------------------------------------

Word Embedding

        对于颜色,我们可以把它拆成三个特征维度,用这三个维度的组合理论上可以表示任意一种颜色。同理,对于词,我们也可以把它拆成指定数量的特征维度,词表中的每一个词都可以用这些维度组合成的向量来表示,这个就是Word Embedding的含义。

        可以通过将高维数据映射到较低维空间来解决稀疏输入数据的核心问题。即使是一个很小的多维空间也可以自由地将语义相似的item组合在一起,并使不同的item隔开。

        首先我们需要对文本进行编码,使之成为计算机可以读懂的语言,在编码时,我们期望句子之间保持词语间的相似行,词的向量表示是进行机器学习和深度学习的基础。word embedding的一个基本思路就是,我们把一个词映射到语义空间的一个点,把一个词映射到低维的稠密空间,这样的映射使得语义上比较相似的词,他在语义空间的距离也比较近,如果两个词的关系不是很接近,那么在语义空间中向量也会比较远。

Embedding

         embedding目的是把一个高纬的,每个维度上相对稀疏的数据投影到相对低维的,每个维度可以取实数集的数据操作。本质上是用连续空间替代(准)离散空间,以增加空间利用率,减少不必要的parameter。

        nlp和推荐系统里的embedding,输入数据就是word id或item ID,也就是one hot encoding,输入维度就是词的个数,每个维度上取01,空间利用率极低。这种情况下,一般的embedding的实现方式就是一个用全连层,输入维度高,输出维度低。

         当然embeddibg也可以用多个全连层加activation层,cnn层,lstm层,以及它们的排列组合来实现。这种情况下,embedding和encoding似乎也没什么区别。不过一般说embedding层,实现方式就是一个没有bias的fc层

         全连层就是从一个坐标系投影到另外一个坐标系,维度可升可降,可以用来做embedding,也可以干别的

------------------------------------------------------------------------------------------

Batch Normalization的本质思想

BN的基本思想其实相当直观:因为深层神经网络在做非线性变换前的激活输入值(就是那个x=WU+B,U是输入)随着网络深度加深或者在训练过程中,其分布逐渐发生偏移或者变动,之所以训练收敛慢,一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近(对于Sigmoid函数来说,意味着激活输入值WU+B是大的负值或正值),所以这导致反向传播时低层神经网络的梯度消失,这是训练深层神经网络收敛越来越慢的本质原因,而BN就是通过一定的规范化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正态分布其实就是把越来越偏的分布强制拉回比较标准的分布,这样使得激活输入值落在非线性函数对输入比较敏感的区域,这样输入的小变化就会导致损失函数较大的变化,意思是这样让梯度变大,避免梯度消失问题产生,而且梯度变大意味着学习收敛速度快,能大大加快训练速度。

 

其实一句话就是:对于每个隐层神经元,把逐渐向非线性函数映射后向取值区间极限饱和区靠拢的输入分布强制拉回到均值为0方差为1的比较标准的正态分布,使得非线性变换函数的输入值落入对输入比较敏感的区域,以此避免梯度消失问题。因为梯度一直都能保持比较大的状态,所以很明显对神经网络的参数调整效率比较高,就是变动大,就是说向损失函数最优值迈动的步子大,也就是说收敛地快。BN说到底就是这么个机制,方法很简单,道理很深刻。

 

Batch Normalization和Layer Normalization的对比分析

  • Batch Normalization 的处理对象是对一批样本
    • Layer Normalization 的处理对象是单个样本。
  • Batch Normalization 是对这批样本的同一维度特征(每个神经元)做归一化,
    • Layer Normalization 是对这单个样本的所有维度特征做归一化。

------------------------------------------------------------------------------------------

1. 参数(parameters)/模型参数

               由模型通过学习得到的变量,比如权重和偏置

2. 超参数(hyperparameters)/算法参数

                 根据经验进行设定,影响到权重和偏置的大小,比如迭代次数、隐藏层的层数、每层神经元的个数、学习速率等

------------------------------------------------------------------------------------------

结构化学习

  • 接触深度学习以来一直接触的概念都是回归,分类,偶尔接触到结构化学习的概念,似懂非懂的糊弄过去,实在是不负责的表现相比于回归,输出一个标量或者预测,输出一个向量,
  • 结构化学习的输出更加复杂,可以是图像,可以是语句,可以是树结构,等等可由更小的组件构成的结构体,我的理解。
  • 目前最火的技术GAN,最多的用处便是生成图像,这就是一个结构化学习的例子,其实像目标检测,语义分割,实例分割这些也是结构化学习,因为他们的输出都不是简单的标量或向量,是结构更加复杂的输出了,
  • 还有,像李宏毅老师课程里讲的,机器翻译,语音识别,聊天机器人都是结构化学习。
  • 做个类比的话,标量和向量更像是原子,分子,而结构化输出更像是物体,由许多原子,分子组成。

------------------------------------------------------------------------------------------

强化学习:

        一个实施一个动作,对环境的影响,环境反馈一个动作和状态。

        累计为一个回报:目标是使得回报达到最大(即基于环境获得最大收益)

        agent   ======动作action=======》环境environment

        agent 《====状态state、奖赏reward====环境

        强化学习是一个策略总结的过程

        特征: 不断重复,反复试验

 

        强化学习:续断决策问题

                学习一从动作到状态的映射

                学习的方法 由强化学习的问题来定

                与监督学习和非监督学习不同,属于引导性的,只会给一个引导,但是不会给明确的好坏

        不停和环境进行交互的过程,需要定义目标

        RL四要素:

                策略

                回报函数

                值函数

                环境模型 (给了一个状态和一个动作,环境给了下一个动作和回报值)

 

        探索的时候,概率较高,可能最后得不到一个最优的

        刚开始,探索的较小,最后得到的相比较而言,会更优

------------------------------------------------------------------------------------------

定义

        机器学习: A computer program is said to learn from experience E with respect to some task T and some performance measure P,    if its performance on T, as measured by P, imporoves with experience E.(E 训练经验、T 任务对象 、P性能指标)

算法分类:

        supervised learning:监督学习:

                                    分类预测、回归分析;

                                    用户点击/购买预测、房价预测

        unsupervised learning:非监督学习

                                    聚类、关联规则;

                                    邮件/新闻聚类

        reinforcement learning: 强化学习

                                    Q-learning、时间差学习;

                                    动态系统以及机器人控制

        recommender systems: 推荐系统

 

来自 <https://www.cnblogs.com/XDU-Lakers/p/10553239.html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值