自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 博客文章导航目录

博客文章导航目录1. 深度学习1.1 自然语言处理简单循环神经网络(Simple RNN)原理与实战长短期记忆网络(LSTM)原理与实战循环神经网络的改进:多层RNN、双向RNN与预训练Sequence-to-Sequence模型原理注意力机制(Attention):Seq2Seq模型的改进自注意力机制(Self-Attention):从Seq2Seq模型到一般RNN模型Attention is all you need:剥离RNN,保留Attention搭建Transformer模型

2021-04-13 20:30:38 1103

原创 从零开始实现大语言模型(十):残差连接

残差连接(shortcut or residual connection)是深度学习实践中已经被证明非常有效的一种优化神经网络结构以解决梯度消失问题,从而提升神经网络训练效率的方法。其核心思想是创建一条梯度传播的快捷路径,让神经网络模块的输出$F(x)$与其输入$x$直接相加,将该神经模块的输出转变成$F(x)+x$,使梯度可以跳过该神经网络模块直接向后传播。本文将探讨深度神经网络中的梯度消失问题,介绍残差连接的基本原理,并应用残差连接解决深度神经网络中的梯度消失问题。

2024-07-28 17:53:40 85

原创 从零开始实现大语言模型(九):前馈神经网络与GELU激活函数

OpenAI的GPT系列大语言模型中的前馈神经网络模块共包含两个Linear层以及一个GELU(Gaussian Error Linear Unit)激活函数。第一个Linear层会对每个token对应的维度为$n$的输入向量做变换,将向量的维度拓展至$4n$。GELU激活函数对第一个Linear层输出向量中的每个元素做变换,并将经过变换后的向量输入第二个Linear层。第二个Linear层会将各个token对应向量的维度压缩回原来的$n$维,得到前馈神经网络模块的输出。

2024-07-28 17:47:20 178

原创 从零开始实现大语言模型(八):Layer Normalization

Layer Normalization是深度学习实践中已经被证明非常有效的一种解决梯度消失或梯度爆炸问题,以提升神经网络训练效率及稳定性的方法。OpenAI的GPT系列大语言模型使用Layer Normalization对多头注意力模块,前馈神经网络模块以及最后的输出层的输入张量做变换,使shape为`[batch_size, num_tokens, embedding_dim]`的输入张量的`embedding_dim`维度数据的均值为0,方差为1。

2024-07-21 23:01:59 1358 2

原创 从零开始实现大语言模型(七):多头注意力机制

本文将`num_heads`个单头注意力模块`CausalAttention`堆叠拓展成多头注意力模块,介绍分别融合`num_heads`个参数矩阵$W_{qi}, W_{ki}, W_{vi}$,一次性并行计算出`num_heads`个qkv向量的方法,并实现OpenAI的GPT系列大语言模型中`MultiHeadAttention`类。

2024-07-21 22:55:22 587

原创 从零开始实现大语言模型(六):因果注意力机制

因果注意力机制(causal attention)是一种特殊的自注意力机制,其在计算context向量$z_i$之前,会使用掩码(mask)屏蔽$x_{i+1}, x_{i+2}, \cdots, x_n$,使注意力权重$\alpha_{i,i+1}, \alpha_{i,i+2}, \cdots, \alpha_{in}$全都等于0,生成的context向量$z_i$只与$x_1, x_2, \cdots, x_i$相关,模型只根据历史信息预测下一个token。

2024-07-13 17:54:15 589

原创 从零开始实现大语言模型(五):缩放点积注意力机制

缩放点积注意力机制(scaled dot-product attention)是OpenAI的GPT系列大语言模型所使用的多头注意力机制(multi-head attention)的核心,其目标与前文所述简单自注意力机制完全相同,即输入向量序列$x_1, x_2, \cdots, x_n$,计算context向量$z_1, z_2, \cdots, z_n$。

2024-07-13 17:48:02 355

原创 从零开始实现大语言模型(四):简单自注意力机制

本文介绍一种不包含训练参数的简化版自注意力机制——简单自注意力机制(simplified self-attention),后续三篇文章将分别介绍缩放点积注意力机制(scaled dot-product attention),因果注意力机制(causal attention),多头注意力机制(multi-head attention),并最终实现OpenAI的GPT系列大语言模型中`MultiHeadAttention`类。

2024-07-06 23:34:56 236 4

原创 从零开始实现大语言模型(三):Token Embedding与位置编码

Embedding是深度学习领域一种常用的类别特征数值化方法。在自然语言处理领域,Embedding用于将对自然语言文本做tokenization后得到的tokens映射成实数域上的向量。本文介绍Embedding的基本原理,将训练大语言模型文本数据对应的tokens转换成Embedding向量,介绍并实现OpenAI的GPT系列大语言模型中将tokens在文本数据中的位置编码成Embedding向量的方法。

2024-07-06 23:28:35 794

原创 从零开始实现大语言模型(二):文本数据处理

神经网络不能直接处理自然语言文本,文本数据处理的核心是做tokenization,将自然语言文本分割成一系列tokens。本文介绍tokenization的基本原理,OpenAI的GPT系列大语言模型使用的tokenization方法——字节对编码(BPE, byte pair encoding),并构建训练大语言模型的`Dataset`及`DataLoader`。

2024-07-02 22:50:37 614

原创 从零开始实现大语言模型(一):概述

从零开始实现大语言模型是了解其原理及领域大语言模型实现路径的最好方法,没有之一。已有研究证明,为特定任务定制或使用领域数据训练的大语言模型能在领域相关的评价指标上超过ChatGPT这样的通用大语言模型。本专栏将从零开始讲解大语言模型理论原理step-by-step,提供一整套工业级文本数据处理,大语言模型构建、预训练、监督微调及指令微调,并行计算与分布式训练代码,并且从零开始解释实现代码line-by-line。

2024-07-02 22:36:52 631

原创 训练策略网络和价值网络

阿尔法狗2016版本使用人类高手棋谱数据初步训练策略网络,并使用深度强化学习中的REINFORCE算法进一步训练策略网络。策略网络训练好之后,使用策略网络辅助训练价值网络。零狗(AlphaGo Zero)使用MCTS控制两个玩家对弈,用自对弈生成的棋谱数据和胜负关系同时训练策略网络和价值网络。在机巧围棋中,训练策略网络和价值网络的方法原理与零狗基本相同。本文将详细阿尔法狗2016版本和零狗中两个神经网络的训练方法。

2022-02-07 15:01:12 4706

原创 为什么交叉熵常被用作分类问题的损失函数

在深度学习领域,交叉熵(Cross Entropy)常被用作分类问题的损失函数。为知其所以然,本文将详细讲解交叉熵,熵(Entropy),KL散度(Kullback-Leibler Divergence) 的基本概念,并分析常用交叉熵作为分类问题损失函数的原因。

2022-01-25 16:58:01 1915

原创 蒙特卡洛树搜索(MCTS)

阿尔法狗下棋的时候,做决策的不是策略网络和价值网络,而是蒙特卡洛树搜索(Monte Carlo Tree Search, MCTS)。本文讲解阿尔法狗2016版本和零狗中的MCTS。

2021-12-08 23:05:06 19034 10

原创 阿尔法狗与机巧围棋的网络结构

阿尔法狗使用策略网络和价值网络辅助蒙特卡洛树搜索,以降低搜索的深度和宽度。机巧围棋落子策略完全基于零狗算法,本文将用强化学习的语言描述围棋游戏的状态和动作,并介绍阿尔法狗和机巧围棋中构造的策略网络和价值网络。

2021-12-02 22:59:12 2667

原创 深度强化学习(DRL)基础

深度强化学习(Deep Reinforcement Learning)是值得深入学习研究且非常有意思的领域,但是其数学原理复杂,远胜于深度学习,且脉络复杂,概念繁杂。强化学习是一个序贯决策过程,它通过智能体(Agent)与环境进行交互收集信息,并试图找到一系列决策规则(即策略)使得系统获得最大的累积奖励,即获得最大价值。环境(Environment)是与智能体交互的对象,可以抽象地理解为交互过程中的规则或机理,在围棋游戏中,游戏规则就是环境。强化学习的数学基础和建模工具是马尔可夫决策过程(Markov De

2021-11-28 23:30:45 8084

原创 深度学习框架(PaddlePaddle)使用教程

机巧围棋使用飞桨(PaddlePaddle) 框架构建并训练阿尔法狗落子策略中的深度神经网络——策略网络和价值网络。本文讲解飞桨框架的基本使用方法:第1部分介绍神经网络的构建;第2部分讲解神经网络训练过程;第3部分介绍模型权重的保存和加载。...

2021-11-22 22:03:18 7405

原创 游戏开发引擎(Pygame)核心方法

Pygame是Python最经典的2D游戏开发第三方库,机巧围棋基于Pygame游戏开发引擎实现围棋游戏运行和交互逻辑,并搭建围棋游戏可视化界面。本文不是Pygame的API文档或教程,但是本文将介绍在机巧围棋中所涉及的Pygame游戏开发引擎相关知识和方法,并详细讲解机巧围棋中基于Pygame实现的按钮控件、信息滚动显示器、音乐播放器等。1. Pygame基本知识1.1 Pygame游戏开发框架Pygame游戏开发框架共包含4个部分:第一部分:引入pygame和sys;第二部分:初始化pyg

2021-11-17 21:40:55 6929

原创 围棋程序逻辑

机巧围棋(CleverGo)在围棋程序内核上采用了aigagror作者开源的GymGo项目,在该项目的基础上进一步封装了一个训练围棋AI的围棋模拟器。本文讲解以GymGo项目中相关方法为背景,讲解围棋程序核心方法及实现逻辑。第1部分讲解棋盘状态表示方法;第2部分讲解围棋终局判定方法;第3部分讲解围棋核心规则方法;第4部分综合第3部分的围棋核心规则方法,讲解下一个棋盘状态的计算方法。1. 棋盘状态表示方法围棋棋盘由纵横各19条线段组成共361个交叉点,每一个交叉点有存在黑子、存在白子或不存在任何棋子共3

2021-11-13 23:45:20 4083

原创 围棋基本知识

围棋使用格状棋盘及黑白二色圆形棋子进行对弈,棋盘上有纵横各19条线段将棋盘分成361个交叉点。在野狐、奕城等各大围棋平台,除19路围棋外,还存在9路和13路围棋用于练习和娱乐。9路围棋即棋盘由纵横各9条线段分成81个交叉点,13路围棋即棋盘由纵横各13条线段分成169个交叉点。围棋以围地多者为胜,被认为是世界上最复杂的棋盘游戏。由于13路和19路围棋复杂度较高,训练相应的围棋AI所需计算资源非常多,所需训练时间非常长,因此机巧围棋主要提供9路围棋一键式训练功能。本文介绍围棋规则及基本行棋知识。1. 围

2021-11-09 21:10:38 8716 3

原创 机巧围棋(CleverGo)项目总览及介绍

1. 项目简介2016年3月,阿尔法狗以4:1战胜围棋世界冠军李世石。自此开始,深度强化学习受到空前的关注并成为AI领域的研究热点,彻底引爆了以深度学习为核心技术的第三次人工智能热潮。机巧围棋利用Python+Pygame+PaddlePaddle基于AlphaGo Zero算法打造了一款点击按钮就能可视化的训练9路围棋人工智能的程序,并搭建了一整套简单易用的围棋AI学习、开发、训练及效果可视化验证框架。机巧围棋项目源码及技术原理文档全部免费开源,真诚期望您能够在GitHub上点个Star支持机巧围棋

2021-11-09 20:52:18 2440

原创 小样本学习(Few-Shot Learning)(三)

1. 前言本文使用飞桨(PaddlePaddle)基于paddle.vision.datasets.Flowers数据集实现小样本图片分类。小样本学习(Few-Shot Learning)(一)讲解了小样本学习问题的基本概念及基本思路,并介绍了使用孪生网络解决小样本学习问题的方法。小样本学习(Few-Shot Learning)(二)讲解了小样本学习问题的Pretraining+Fine Tuning解法。本人全部文章请参见:博客文章导航目录本文归属于:元学习系列2. 预训练神经网络(Pretr

2021-09-05 18:48:38 3734 43

原创 小样本学习(Few-Shot Learning)(二)

1. 前言本文讲解小样本学习问题的Pretraining+Fine Tuning解法。小样本学习(Few-Shot Learning)(一)讲解了小样本学习问题的基本概念及基本思路,并介绍了使用孪生网络解决小样本学习问题的方法。小样本学习(Few-Shot Learning)(三)将使用飞桨(PaddlePaddle)基于Omniglot手写字体数据集实现小样本图片分类。本人全部文章请参见:博客文章导航目录本文归属于:元学习系列2.在小样本学习问题中,测试样本及其类别均不在训练集中,但是小样本

2021-09-01 14:37:04 2565 17

原创 小样本学习(Few-Shot Learning)(一)

1. 前言

2021-08-28 17:48:05 5922 6

原创 Vision Transformer(ViT)

1. 前言本文讲解Transformer模型在计算机视觉领域图片分类问题上的应用——Vision Transformer(ViT)。本人全部文章请参见:博客文章导航目录本文归属于:计算机视觉系列2. Vision Transformer(ViT)Vision Transformer(ViT)是目前图片分类效果最好的模型,超越了最好的卷积神经网络(CNN)。ViT在2020年10月挂在arXiv上,2021年正式发表。在所有的公开数据集上,ViT的表现都超越了最好的ResNet,前提是在足够大的数据

2021-08-22 22:24:51 4014

原创 ResNet

1. 前言本文使用飞桨(PaddlePaddle)复现卷积神经网络ResNet。本文ResNet复现代码比PaddlePaddle官方内置ResNet代码结构更加清晰,建议参考本文中ResNet复现代码了解ResNet模型搭建流程。本人全部文章请参见:博客文章导航目录本文归属于:经典CNN复现系列前文:GoogLeNet2. ResNet模型结构2013年,Lei Jimmy Ba和Rich Caurana分析了深度神经网络,并从理论和实践上证明了更深的卷积神经网络能够达到更高的识别准确率。将

2021-08-20 23:33:38 1783

原创 GoogLeNet

1. 前言本文使用飞桨(PaddlePaddle)复现卷积神经网络GoogLeNet。本人全部文章请参见:博客文章导航目录本文归属于:经典CNN复现系列前文:VGGNet2. GoogLeNet模型结构GoogLeNet是2014年ImageNet比赛的冠军,它的主要特点是网络不仅有深度,还在横向上具有“宽度”。GoogLeNet提出了一种被称为Inception的模块,该模块具有不同尺寸的卷积核,可以使用较大的卷积核提取空间分布范围更广的图像信息的特征,使用较小的卷积核提取空间分布范围较小的图

2021-08-15 21:34:44 775 5

原创 VGGNet

1. 前言本文使用飞桨(PaddlePaddle)复现卷积神经网络VGGNet。本人全部文章请参见:博客文章导航目录本文归属于:经典CNN复现系列前文:AlexNet2. VGGNet模型结构VGGNet是当前最流行的CNN模型之一,由Simonyan和Zisserman在2014年提出,其命名来源于论文作者所在的实验室Visual Geometry Group。VGGNet通过使用一些列大小为3x3的小尺寸卷积核的卷积层和池化层构建深度卷积神经网络,并在深度学习图像分类实践中取得了比较好的效果

2021-08-11 22:17:26 865

原创 AlexNet

1. 前言本文使用飞桨(PaddlePaddle)复现卷积神经网络AlexNet。本人全部文章请参见:博客文章导航目录本文归属于:经典CNN复现系列2. AlexNet模型结构2012年,Alex Krizhevsky等人提出的AlexNet以很大优势获得了ImageNet比赛的冠军。这一成果极大的激发了产业界对神经网络的兴趣,开创了使用深度神经网络解决图像问题的途径。AlexNet包含5层卷积和3层全连接层。除最后一个全连接层外,每个卷积层和全连接层激活函数均为ReLU。同时,AlexNet使

2021-08-08 16:04:23 677

原创 机器翻译——英译中

1. 前言本文使用飞桨(PaddlePaddle)训练机器翻译模型,实现从英文翻译成中文的机器翻译。本人全部文章请参见:博客文章导航目录本文归属于:NLP模型原理与应用系列前文:BERT与ERNIE

2021-08-04 16:15:45 5113 8

原创 BERT与ERNIE

1. 前言本文讲解预训练Transformer模型常用的方法:BERT与ERNIE。本人全部文章请参见:博客文章导航目录本文归属于:NLP模型原理与应用系列前文:搭建Transformer模型2. BERTBERT(Bidirectional Encoder Representations from Transformers)用于预训练Transformer模型Encoder网络,可以大幅提升Transformer模型的准确率。BERT的核心思想如下:随机遮挡句子中一个或多个单词,让Enco

2021-07-30 22:50:31 2544 2

原创 搭建Transformer模型

1. 前言本文使用Attention层与Self-Attention层搭建深度神经网络——Transformer模型。本人全部文章请参见:博客文章导航目录本文归属于:NLP模型原理与应用系列前文:Attention is all you need:剥离RNN,保留Attention2. 多头注意力机制3. 多头自注意力机制...

2021-07-27 12:41:36 1929

原创 Attention is all you need:剥离RNN,保留Attention

本文讲解……。本人全部文章请参见:博客文章导航目录本文归属于:NLP模型原理与应用系列前文:自注意力机制(Self-Attention):从Seq2Seq模型到一般RNN模型

2021-07-17 16:22:51 1357

原创 自注意力机制(Self-Attention):从Seq2Seq模型到一般RNN模型

1. 前言本文讲解自注意力机制(Self-Attention)。本人全部文章请参见:博客文章导航目录本文归属于:NLP模型原理与应用系列前文:注意力机制(Attention):Seq2Seq模型的改进2. 自注意力机制(Self-Attention)Seq2Seq模型一般有两个RNN网络,一个为Encoder,另一个为Decoder。Attention用于改进Seq2Seq模型,解决RNN遗忘问题。Self-Attention也叫做Intra-Attention,与Attention非常类似。

2021-07-13 21:31:24 1795

原创 注意力机制(Attention):Seq2Seq模型的改进

1. 前言本文讲解Seq2Seq模型改进方法:注意力机制(Attention)。本人全部文章请参见:博客文章导航目录本文归属于:NLP模型原理与应用系列前文:Sequence-to-Sequence模型原理2. Seq2Seq模型缺点Seq2Seq模型有一个Encoder(编码器),和Decoder(解码器)。由于输入和输出均为序列数据,在深度学习时间中Encoder和Decoder一般均为结构相同的RNN。Encoder RNN对输入序列进行处理,将输入序列信息压缩到一个向量中。Encoder

2021-07-12 12:35:46 3437

原创 Sequence-to-Sequence模型原理

1. 前言本文讲解Sequence-to-Sequence(Seq2Seq)模型和机器翻译原理。本人全部文章请参见:博客文章导航目录本文归属于:NLP模型原理与应用系列前文:循环神经网络的改进:多层RNN、双向RNN与预训练...

2021-07-10 21:16:58 4630 2

原创 循环神经网络的改进:多层RNN、双向RNN与预训练

1. 前言本文讲解循环神经网络(RNN)的改进方法,并使用改进的RNN实现电影评论情感分析。本人全部文章请参见:博客文章导航目录本文归属于:NLP模型原理与应用系列前文:长短期记忆网络(LSTM)原理与实战2. 多层RNN(Stacked RNN)在深度学习领域,可以将许多全连接层堆叠,构成一个多层感知机(Multi-Layer Perception),可以将许多卷积层堆叠,构成一个深度卷积网络。同样的,可以将许多RNN层堆叠,构成一个多层RNN网络。RNN每读取一个新的输入xtx_txt​,

2021-07-06 22:31:37 6752 5

原创 长短期记忆网络(LSTM)原理与实战

1. 前言本文详解LSTM(Long Short Term Memory)原理,并使用飞桨(PaddlePaddle)基于IMDB电影评论数据集实现电影评论情感分析。本人全部文章请参见:博客文章导航目录

2021-07-04 11:01:06 6151

原创 简单循环神经网络(Simple RNN)原理与实战

1. 前言自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向,也是我目前从事的主要方向。本系列文章将详细讲解自然语言处理领域相关模型算法原理,并使用PaddlePaddle框架进行相应项目实战。主要包括:Simple RNN模型、LSTM模型、多层RNN与双向RNN、Seq2Seq模型、注意力机制(Attention)、自注意力机制(Self-Attention)、Attention层与Self-Attention层、Mult

2021-06-27 14:49:34 5253

原创 支持向量机(SVM)详解(三)

1. 前言前文:支持向量机(SVM)详解(一)支持向量机(SVM)详解(二)前面用两篇文章

2021-05-06 14:29:05 1967 7

空空如也

空空如也

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

TA关注的人

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