隐马尔可夫
隐马尔可夫隐马尔可夫模型由隐含状态链和可见状态链组成。接下来用投骰子的实验,阐述隐含状态链和可见状态链的由来。
隐含状态链和可见状态链的由来实验中有三种不同的骰子。第一个是立方体,有1到6、六个面,记作D6。第二个是正4面体,1到4四个面,记作D4。第三个是正8面体,1到8,8个面,记作D8。
它们每个面出现的概率分别是1/6、1/4和1/8。
我们蒙着眼睛,从这三个骰子中,随机的选择一个,进行抛掷。投掷后,可以得到1到8中的某个数字。
按照这样的方式,重复的随机选择骰子,不断的抛掷,就可以得到一串数字。因为这串数字是我们可以看到的,并直接记录下来的,因此我们将这串数字称为可见状态链。
在抛掷的过程中,被我们随机选出来的骰子的编号,也可以组成一串序列,序列中包括了D4、D6和D8。因为我们是蒙着眼睛选骰子,所以并不知道具体选的是哪个骰子(注解)。因此,我们称这组骰子编号序列为隐含状态链。
(注解): 假设实验是在理想状态下进行,3个骰子摸起来的感觉是一样。在抛掷时,一定不知道选的是哪个骰子。
在实验过程中,产生了两个数据链,可见状态链与隐含状态链,将它们组合在一起,就是隐马 ...
极大似然估计
似然和极大似然估计为了深入讨论似然的概念,我们需要先来了解概率和似然。概率和似然都是统计学中的重要概念,他们之间有着紧密的联系。
概率和似然概率的概念概率是在特定环境下,某件事情发生的可能性。
在结果没有产生之前,我们可以根据环境中的参数,对某件事情发生的概率进行预测。
举例: 概率事件对于抛硬币事件,在抛硬币之前并不知道,抛硬币的结果是哪一面朝上。但我们可以根据硬币的性质进行推测。如果抛掷的硬币是一枚均匀的硬币,那么可以推断出,任何一面朝上的可能性都是50%。
我们要注意,这里的概率50%,只有在抛硬币之前是有意义的,因为抛完硬币后,结果就确定了。
似然的概念似然和概率刚好相反,它是基于已经确定的结果来推测产生这个结果的可能环境,或者是推测环境中的某些参数。
举例: 似然事件在抛硬币的例子,假如随机抛出一枚硬币1万次,结果8000次人像在上,2000次数字在上。那么可以判断出,这枚硬币在构造时是有些特殊的。我们基于抛掷结果,进一步推测该硬币的具体参数,人像的概率是0.8,数字的概率是0.2。
这个根据结果判断事情本身性质的过程,就是似然。
因此,总结来说,似然和概率可以看作 ...
Hugging Face入门 (模型文件详解)
Hugging Face入门 (模型文件详解)Hugging face Llama-2 模型文件详解当使用 AutoClass 或者 pipeline() 进行模型加载时,我们会看到从Hugging face上下载模型相关文件。这些文件有什么作用?今天我们就以模型 meta-llama/Llama-2-7b-chat-hf 为例,介绍模型的文件组成。
模型文件详解Llama-2 Huggingface 文件构成如下图所示:
Huggingface 文件介绍
文件名
描述
config.json
模型的主要配置信息,如 Bert 模型设置、预测头部设置、训练参数等
generation_config.json
文本生成相关的模型配置
model-00001-of-00002.safetensors
safetensors 文件格式的模型权重参数的分块
model-00002-of-00002.safetensors
safetensors 文件格式的模型权重参数的分块
model.safetensors.index.json
safetensors 模型参 ...
Hugging Face入门 (Pipeline)
Hugging Face入门 (Pipeline)Pipeline是使用模型进行推理的一种非常方便和简单的方式。Pipeline将库中大部分复杂的代码进行了封装,提供了一个专门用于多个任务的简单API,包括命名实体识别、掩码语言建模、情感分析、特征提取和问答等任务。
Transformers库为Pipeline提供了一个方便的接口函数pipeline()来支持这些特性。可以在huggingface文档上了解更多关于Pipeline的详细信息。
接下来,我们将学习如何使用pipeline()函数。
安装transformers和sentencepiece库使用以下命令来安装transformers和sentencepiece库
1!pip install git+https://github.com/huggingface/transformers sentencepiece --quiet
文本摘要的示例每种任务类型都有相应的Pipeline类,但是使用通用的pipeline()函数更加简单,该函数可以自动加载默认模型,或者指定模型,并提供了对您的任务进行推理的预处理。例如,对于文本摘 ...
Hugging Face入门 (AutoClass)
Hugging Face入门 (AutoClass)Transformers 提供了 AutoTokenizer 和 AutoModel 这两个类来方便加载预训练模型及其对应的分词器。
AutoTokenizerAutoTokenizer 是一个用于文本预处理的分词器,它负责将输入文本转换为数字数组,以便输入模型进行处理。分词器会按照一定的规则进行分词,包括如何切分单词以及以何种级别进行切分。您可以根据模型的名称来实例化一个特定的分词器。为了确保分词的一致性,我们建议使用与模型预训练时相同的分词器。
更多关于分词的详细知识,请参考 autoclass。
AutoModel与 AutoTokenizer 类似,AutoModel 提供了一种简单而统一的方式来加载预训练模型。您可以像加载 AutoTokenizer 一样加载 AutoModel。唯一的区别在于选择适用于您任务的正确 AutoModel。您可以在官方文档中找到所需模型的名称。
更多关于 AutoModel 的信息,请参考 automodel。
ChatGLM-6B 模型ChatGLM-6B 是一个开源的、支持中英双语问答的对 ...
梯度下降算法的梯度方向
梯度下降算法的梯度方向在多元函数中,如果我们沿着函数梯度的方向运动,函数的值会以最快的速度增加;相反,如果我们沿着函数梯度的反方向运动,函数的值会以最快的速度减小。
梯度的基本概念梯度(gradient)是微积分和向量分析中的重要概念,它可以理解为多元函数全部偏导数所构成的向量。例如,二元函数f(x,y)的梯度是由函数f对x和y求偏导组成的二维向量。
二元函数与函数上某点的梯度考虑二元函数f(x,y)=x^2+y^2,在点(1,1)处的梯度向量如下图所示。将函数上的点P(1,1,2)标记为红色,将该点向灰色的x-o-y平面投影,标记为蓝色。从蓝色点出发,画出向量(2,2),用黑色箭头表示,这就是点P的梯度向量。
由此可见,从输入点(1,1)沿着(2,2)方向运动,函数会增加最快。
梯度向量的具体算法从点P出发,向不同方向运动相同长度,可以发现只有沿着梯度方向运动,函数值变化最快。
基于俯视角度观察函数,在x-o-y平面上,我们可以沿着三个方向向量:(-1,0), (1,0), (2,2),移动一个单位。
从P点向(-1,0)方向到达A点,A点的函数值为f(0,1) = 0^2 + ...