Transformer模型
Transformer 模型
一、起源发展
1.两个著名的Transformer模型:
GPT:(the Generative Pretrained Transformer)
BERT(Bidirection Encoder Representations Transformers)
2.分类
纯Encoder 模型(例如BERT),又称自编码(auto-encoding) Transformer模型;
纯Decoder 模型(例如GPT), 又称自回归(auto-regressive)Transformer模型;
Encoder-Decoder模型(例如BART、T5),又称Seq2Seq(sequenece-to-sequence) Transformer模型。
二、Transformer模型
1.Transformer 模型本质是预训练模型,大都采用自监督模型(Self-supervised learning) 的方式在大量语料上进行训练。
2.自监督学习是一种训练目标可以根据模型的输入自动计算的训练方法。
NLP--Transformer入门
NLP–Transformer 入门
Part1 自然语言处理
自然语言处理,又称计算语言学(NLP)。借助计算机研究人类语言的科学。
自然语言的研究基本上分为两个阶段:
1.通过语法理解自然语言。 该阶段主要目的是分析语句、获取语义。依靠语言学家人工总结文法规则,但实际上自然语言是一种上下文有关文法,实际很难用计算机进行解析。
2.统计语言学。 基于数学模型和统计方法。例如语音识别、词性分析(核心是通信系统加隐马尔可夫模型,输入输出一维符号,且保留原始次序),机器翻译(输出为二维树型结构的句法分析)。
统计语言模型:
模型的核心思想判断一个文字序列是否构成人类能够理解并且有意义的句子。
IBM 实验室的 Jelinek提供如下思路:
一个文字序列 w1,w2,w3......wnw_1,w_2,w_3......w_nw1,w2,w3......wn是否合理,看这个句子S出现的概率大小P(S)如何,概率越大说明这个句子越合理。
P(S)=P(w1,w2,w3,...,wn)=P(w1)P(w2∣w1)P(w3∣w1,w2)...P(wn∣w1,w2,. ...
LSTM
LSTM(Long Short Term Memory)
一、RNN
全拼 Recurrent Neural Networks.
当前节点受到前面节点的隐节点影响。
RNN的数学表达式可以表示为:
ht=σ(xt∗wxt+ht−1∗wht+b)h_t =\sigma(x_t * w_{xt}+h_{t-1} *w_{ht}+b)
ht=σ(xt∗wxt+ht−1∗wht+b)
RNN单元:
长期依赖(Long Term Dependencies):
123456eg1: The cat, which already ate a bunch of food, was full. | | | | | | | | | | | t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10eg2: The cats, which already ate a bunch of food, were full. | | | ...
Kmeans聚类算法
Kmeans 聚类算法
一、Kmeans 聚类算法
Kmeans是一种无监督学习的代表。聚类是没有样本的标签的情况下,通过数据之间的内在关系把样本划分为若干的类别。增大类内聚,减少类间距。
聚类是通过迭代寻找K个簇(cluster) 的一种划分方案,使得聚类结果对应的损失函数最小。其中损失函数我们可以定义为各个样本到所属簇中心点的误差平方和:
J(c,μ)=∑i=1M∣∣xi−μci∣∣2J(c,\mu) = \sum_{i = 1}^{M}||x_i-\mu_{c_i}||^2
J(c,μ)=i=1∑M∣∣xi−μci∣∣2
二、具体步骤
1.数据预处理。主要是标准化,异常点过滤
2.随机选取K 个中心点,记为μ1(0),μ2(0),μ3(0),...,μk(0)\mu_1^{(0)},\mu_2^{(0)},\mu_3^{(0)},...,\mu_k^{(0)}μ1(0),μ2(0),μ3(0),...,μk(0)
3.定义损失函数:J(c,μ)=min∑i=1M∣∣xi−μci∣∣2J(c,\mu) = min\sum_{i = 1}^{M}| ...
KNN算法
KNN 算法(K Near Neighbor)
一、简介
就是说每个样本都可以根据与它最接近的K个邻居来代表,是一种基于监督学习方式的分类算法。简单来表达:近朱者赤近墨者黑。具体可以表示为下图:
图中绿色的点可以根据距离K内的其他邻居来判断是三角还是方块。
二、距离
我们一般选用曼哈顿距离或者是欧氏距离,具体表述公式如下:
曼哈顿距离:d1,2=∑i=1k∣x1i−x2i∣欧氏距离:d1,2=∑i=1k∣x1i−x2i∣2\text{曼哈顿距离:} d_{1,2} = \sum_{i=1}^k|x_{1i}-x_{2i}|
\\\text{欧氏距离:} d_{1,2} =\sqrt{\sum_{i=1}^k{|x_{1i}-x_{2i}|}^2}
曼哈顿距离:d1,2=i=1∑k∣x1i−x2i∣欧氏距离:d1,2=i=1∑k∣x1i−x2i∣2
三、K值的选取
K值的选取对于算法的影响很大,K = 0的时候没有邻居,K = N(邻居个数)的时候输出邻居中数量最多的。所以为了选取一个合适的K值也很重要。
交叉验证法
我们使用交叉验证发来搜索K值, ...
激活函数
常见的神经网络激活函数
1.线性激活函数
线性激活函数的存在恰恰证明了需要非线性激活函数的存在,因为多个线性激活函数(多个隐藏层)神经网络与只有一个线性激活函数隐藏层的神经网络一样。
2.sigmoid 函数(logistic回归使用的激活函数)
a=g(z)=11+e−za = g(z) = \frac{1}{1+e^{-z}}
a=g(z)=1+e−z1
导数:g′(z)=g(z)∗(1−g(z))导数: g'(z) = g(z)*(1 - g(z))
导数:g′(z)=g(z)∗(1−g(z))
3. tanh函数
a=g(z)=ez−e−zez+e−za = g(z) = \frac{e^z-e^{-z}}{e^z+e^{-z}}
a=g(z)=ez+e−zez−e−z
tanh 函数是由sigmoid 函数平移收缩得到。
4.relu 函数
a=g(z)=max(0,z)g′(z)={1,z>0undefined,z=00,z<0a = g(z) = max(0,z) \\
\\
g'(z) = \begin{cases} ...
栈、队列和数组
第三章: 栈、队列和数组
3.1栈
3.1.1栈的基本概念
\quad (1)栈的定义
\quad \quad 只能在一端进行插入删除操作。
\quad (2)栈的基本操作
\quad \quad InitStack(&S);
\quad \quad StackEmpty(S);
\quad \quad Push(&S,x);
\quad \quad Pop(&S,&x);
\quad \quad GetTop(S,&x);
\quad \quad DestroyStack(&S);
3.1.2栈的顺序存储结构
\quad (1)顺序栈的实现
12345#define MaxSize 50typedef struct { Elemtype data[MaxSize]; int top;}SqStack;
\quad (2)顺序栈的基本运算
\quad \quad \quad 初始化
1234void InitStack(SqStack &S){ S.top = -1;} ...
第 2 章 -- 线性表
第二章: 线性表
2.1 线性表的定义和基本操作
2.1.1 线性表的定义
\quad 线性表: 具有相同数据类型的n个数据元素的有限序列。
\quad 注: 线性表包括顺序表和链表等。线性表是一个逻辑结构,而顺序表和链表是存储结构。
2.1.2 线性表的基本操作
\quad InitList(&L) ; 初始化。
\quad Length(L) ;求长度
\quad LocateElem(L,e) ;定位e的下标
\quad GetElem(L,i) ;查看下标i的元素
\quad ListInsert(&L,i,e) ;位置i插入e
\quad ListDelete(&L,i,&e) ;删除位置i的元素给e
\quad PrintList(L) ;打印列表
\quad Empty(L) ;判空
\quad DestroyList(&L) ;释放内存
2.2 线性表的顺序表示
2.2.1 顺序表的定义
\quad 顺序表长度固定:
12345#define MaxSize 50typedef struct { Elemtype ...
第 1 章 -- 绪论
第一章: 绪论
1.1 数据结构的基本概念
1.1.1基本概念和术语
1.数据
\quad信息的载体,描述客观事物属性的数、字符等能输入到计算机中并被计算机处理的集合。
2.数据元素
\quad 是数据的基本单位,通常作为一个整体进行考虑。但注意数据元素可以被拆分为若干个数据项。比如一条学生记录是一个数据元素,身份证号、性别、姓名都是一个数据项。
3.数据对象
4.数据类型
5.数据结构
$\quad $ 数据结构包括 逻辑结构、物理结构、数据的运算。
1.1.2 数据结构的三要素
1.逻辑结构
$\quad $ 线性结构:一般线性表、受限线性表(队列、栈、串)、线性表的推广(数组)
\quad 非线性结构:集合、树形结构(二叉树)、图结构(有向图、无向图)
2.存储结构
\quad 顺序存储:相邻存储
\quad 链式存储:借助指针来连接元素存储的顺序关系
\quad 索引存储:用索引表来进行检索。 优点:检索速度快。
\quad 散列存储:又称哈希存储。优点:检索、增删结点都很快。 对于散列函数的依赖较大。
3.数据的运算
\quad 包括对于数据运算的定义和实现。
1.2 算法和 ...