自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 9.超参数优化

上述调整超参数的方法是最常见的,几乎适用于所有模型:线性回归、逻辑回归、基于树的方法、梯度提升模型(如xgboost、lightgbm),甚至是神经网络。虽然这些方法已经存在,但学习时必须从手动调整超参数开始,即手工调整。手工调整可以帮助你学习基础知识,例如,在梯度提升中,当你增加深度时,你应该降低学习率。如果使用自动工具,就无法学习到这一点。一旦你能更好地手动调整参数,你甚至可能不需要任何自动超参数调整。创建大型模型或引入大量特征时,容易造成过拟合。

2023-10-05 12:09:16 103

原创 8.特征选择

在每次迭代中,我们都可以剔除最不重要的特征或者系数接近0的特征,直到达到所需的特征数量为止。特征过多会带来维度诅咒的问题,也需要更多的样本来训练模型,通过特征选择来减少特征数量是很常见的方法。你还可以根据需要指定系数或特征重要性的阈值,以及要选择的特征的最大数量(这在下面的例子中没有体现)。如果你用系数的方法选择特征,你可以设定一个阈值,如果特征的系数高于该阈值,则保留该特征,否则剔除。上面的实现可以满足大部分单变量特征选择的需求,创建较少而重要的特征通常比创建数以百计的特征要好。

2023-09-27 20:45:00 90

原创 7. 特征工程

有时候,比如在处理时间序列问题的时候,你会遇到一个特征的值不是一个单独的值,而是一个列表包含多个值的情况。这时候,可以根据列表的值创建很多新的特征:比如mean,max,min,unique,skew,kurtosis,kstat,percentile,quantile,pear to peak等等。对于数值型特征,一个方法是用一个未出现的值比如0来填充该特征所有的缺失值,但这种方法效果不佳。一个比较新奇的方法是knn:对于一个有缺失值的样本,找到最近的k个样本,用这k个样本的均值来填充缺失值。

2023-09-15 21:21:57 71

原创 1. 监督学习和无监督学习

大部分人刚开始学习机器学习的时候,会从非常有名的数据集开始,比如泰坦尼克数据集(Titanic dataset)或者鸢尾花数据集(Iris dataset),这两个都是监督学习问题。MNIST,手写数字识别,是一个很流行的监督学习问题,一般是构造一个模型,可以根据输入数字的图片(0-9)判断出输入的数字是什么。通过t-SNE方法将输入的图片数据降成2维,然后画出降维后的数据散点图。从可视化结果可以看到,降到2维后,不同数字的样本点有明显的聚类现象。(classification),标签为实数的叫。

2023-09-03 17:17:36 141

原创 mac环境配置

Miniconda是一款小巧的python环境管理工具,安装包大约只有50M多点,其安装程序中包含conda软件包管理器和Python。一旦安装了Miniconda,就可以使用conda命令安装任何其他软件工具包并创建环境等。用conda或者pip都可以安装工具包,不过有一些工具包conda仓库可能没有,所以pip安装比较方便。命令行输入换源语句,下面四个源随便用哪一个都行,再加上最后一句。你的环境名字是创建的文件夹名字,也就是项目名字。本书所有的代码都在ml环境中运行。环境名就是创建的文件夹的名字。

2023-09-02 21:16:54 200

原创 1.1 ChatGPT背后的关键技术-预训练

ChatGPT的GPT对应的英文分别为Generative Pre-trained Transformer,意思是用到Transformer网络架构的生成式预训练模型。其中预训练也叫做自监督学习(Self-supervised Learning)或者是大模型(Foundation Model)。

2023-06-22 22:18:10 591 1

原创 1.0 正确认识ChatGPT

通过模型(函数)每次计算一个关于token(字)的多分类结果,然后随机抽样(sample)一个token作为输出,注意并不是直接输出概率最大的token,但概率越大的token被sample到的概率也越大。由于ChatGPT对于每个生成的token都是从结果中随机采样的,所以对于同一个输入的问题,它每次生成的答案可能都是不同的。再把这次输出的token(机)接到本次的输入后面,形成下一步的输入,用来计算下次输出的token(器)。重复上面的步骤,一直到模型的输出token为END的时候结束。

2023-06-22 21:57:14 147 1

原创 7.0 BERT入门

BERT(Bidirectional Encoder Representations from Transformers)整体上是由多层Transformer Encoder堆叠形成,架构上没有太大的新意,所谓的“Bidirectional”其实指的也就是Transformer中的self-attention机制。使用预训练(pre-train)好的BERT模型做一些下游任务(Downstream tasks)的时候,对参数做一些微调(fine-tune),可以取得很好的效果。

2023-06-17 15:12:07 153

原创 6.0 GAN入门

输入是分布,输出也是分布的网络结构。其中,输入包含另外的条件x的,称为条件生成(conditional generation);输入仅有下面的随机分布的,称为无条件生成(unconditional generation)。为什么输入要采用分布?比如图中的动漫人脸生成任务,输入要求有红眼睛,这样对应的输出是不确定的,具有随机性。也就是说相同的输入可能有不同的输出,所以输入也得具有随机性。

2023-06-09 20:19:00 105

原创 2.5 Batch Normalization

分别表示所有样本的均值向量和标准差的向量,计算某个单个样本的标准化值整体进行计算即可。可以通过调节参数使得均值和方差不为0和1,如下图的。的值进行标准化处理,变到同一scale,这样损失函数的等高线图就会变得像右图:不同维度梯度下降的速度接近,梯度下降的速度会比较快。的范围比较大,对应的梯度比较陡峭。这样不同的参数变化情况对于梯度下降是不利的,会导致梯度下降的速度缓慢。来自于训练过程,具体来说是在批次的训练过程中取移动平均,最终的值作为测试过程对应层的均值和方差。的范围比较小,对应的梯度比较平滑,

2023-06-03 21:06:29 42

原创 5.1 常见的tips

集束搜索,作用是寻找可能性最大的生成序列,相对于穷举来说,计算量大大缩小(穷举是指数级,BS是常数级)。产生的结果可能不是最优,但一般来说足够好了。参数是集束的宽度B,B越大,考虑的可能性越多,计算量就越大。BS每次会选择可能性最大的B个结果做为候选,B=1时,是贪婪搜索,即每次选择可能性最大的一个向量,贪婪搜索的结果不好。具体看吴恩达的视频。

2023-05-31 21:10:43 52 1

原创 5.0 Transformer

输入一个序列,输出相同长度的序列。Encoder的输出向量生成K和V,Decoder本身产生Q,这样共同形成Cross Attention机制,产生向前传播的向量序列。Seq2seq指的是输入是序列,输出也是序列的模型,输出序列的长度由模型自身决定。与Encoder的区别是第一个多头注意力是加掩码(mask)的,中间多一个Cross Attention的部分。一开始输入start向量,然后每次产生的结果做为下一个输入,当输出向量代表end时,输出结束。加mask的原因是保证当前的输出只受之前输入的影响。

2023-05-15 21:58:08 79 1

原创 4.0 自注意力机制(Self-attention)

之所以不用独热向量表示单词,是因为它没办法体现词汇间的关系,而词嵌入向量具备语义信息,比如同类词(苹果和梨)的向量距离会比较近。同时,自注意机制的输出向量是并行计算的,不像RNN前后依赖,所以训练速度快。有一些人工设计的位置编码,每个向量加上该位置的位置编码,从而把位置的信息也包含进去。α(attention score)为k和q的内积,α’是该节点的所有α值对应的softmax值,b是所有节点v值的加权平均。输入一定长度的向量序列,输出同样数量的向量,并且输出的向量包含了该位置上下文的语义信息。

2023-05-07 13:44:00 662

原创 3.0 CNN简介和常见训练技巧

类似将图片缩小不会改变图片表示的对象这个原理,池化层将输入进行缩小,可以减少后面训练的计算量,一般接在卷积层后面。最常用的做法是最大池化。一般为黑白(一个channel)或者彩色(三个channel)的图片,下面假设输入为三个通道。交叉验证(Cross Validation)和集成(Ensemble)可以提高模型的表现。常用的数据增强(Augmentation)方法。也常会对测试数据进行增强。

2023-04-21 21:48:46 240

原创 2.4 classification简介

分类:输出层有一个(二分类)或者多个节点,通过softmax激活函数将该层的输入转换成概率。二分类是多分类最简单的形式,使用的sigmoid激活函数就是softmax类别为2的情况。分类问题的损失函数为交叉熵损失,是由极大似然估计推导而来的。这里的y为输出层的输入,y’为转化后的概率值。回归:输出层只有一个节点,返回数值。

2023-04-18 22:05:14 116

原创 2.3 自适应学习率(Adaptive learning rate)

同时,在训练的不同阶段,学习率也可以有所不同,比如早期学习率可以更大,后期学习率可以变小。η同样是固定的,但σ受到当前梯度的影响是可以调节的,不像前面RMS那样受各个update的梯度影响相同。很多时候训练陷入瓶颈,损失不再下降,不是因为陷入了局部最小值,大部分情况下是在局部最小值附近震荡(学习率太大),这个时候应该通过降低学习率的方式,从而能够继续往最小值方向下降。这种方法η是固定的,总体上在梯度小的地方,σ也比较小,对应的学习率步长比较大;梯度大的地方,σ比较大,学习率步长比较小。

2023-04-18 22:04:56 739

原创 2.2 批次梯度下降和动量

梯度下降加动量的好处是可以帮助逃离临界点,而且梯度下降更加平稳。

2023-04-17 17:39:52 38 1

原创 2.1 鞍点和局部最小值

但实际训练中参数很多的情况下,几乎不会陷入局部最小值,所以这里不做总结。

2023-04-17 17:11:33 56 1

原创 2.0 一般指南

机器学习一般指南

2023-04-12 21:32:36 39 1

原创 1 深度学习介绍

一、机器学习的本质:找函数二、函数的类型回归分类结构学习(输出有结构的结果,比如图片或者文本)三、得到函数的过程:定义一个含有未知参数的函数定义损失函数优化:用梯度下降找到使损失函数最小的参数值如果函数表现不好,寻找新的函数,重复1-3四、引出神经网络结构和深度学习的概念

2023-04-07 23:51:27 59 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除