注意力机制 传统神经网络 从 计算机视觉(Computer Vision,CV)为起源发展起来的神经网络,其核心架构有三种: 全连接神经网络(Feedforward Neural Network,FNN): 即每一层的神经元都和上下两层的每一个神经元完全连接,如图所示: 卷积神经网络(Convolutional Neural Network,CNN):训练参数量远小于全连接神经网络的卷积层来进行特征提取和学习。 循环神经网络(Recurrent Neural Network,RNN): 使用历史信息作为输入、包含环和自重复的网络, RNN 及 LSTM 的局限性 RNN、 LSTM 具有捕捉时序信息、适合序列生成的优点,却有两个缺陷: ① 序列依序计算能很好模拟时序信息,但限制了计算机(GPU)并行计算的能力,导致模型参数量不算大,但计算时间成本高; ② 难以捕捉长序列依赖关系。在 RNN 中,距离越远的输入之间的关系越难捕捉,需要将整个序列读入内存依次计算,限制了序列的长度。虽然 LSTM 中通过门机制进行了优化,但对于较远距离依赖关系的捕捉,依旧不如人意。 注意力机制 来 ...
仓库链接:https://github.com/shibing624/MedicalGPT?tab=readme-ov-file 为什么选择 MedicalGPT 环境搭建成本低,上手速度快 按照 README 安装即可,整体过程相对顺畅。 MedicalGPT 的强化学习部分基于 TRL ,依赖更轻、安装更省心;对比某些更“工程化/更复杂”的训练框架,上手门槛更低。 覆盖大模型训练全链路,路径完整 一套仓库能把关键阶段串起来:PT / SFT / RL / RAG ; RL 侧支持的算法较丰富,便于在同一套工程框架下做对比实验与迭代; 第一阶段:跑通 MedicalGPT 准备工作:环境与底座模型 在开始跑全链路之前,需要准备好环境和一个 小参数量的底座模型(方便在单卡上快速跑通,不追求效果,只验证流程)。 1. 安装依赖 : 1234git clone --depth 1 https://github.com/shibing624/MedicalGPT.gitcd MedicalGPTlspip install -r requirements.txt 2. ...
大模型研习
未读NLP基础概念 什么是NLP? NLP 是一种让计算机理解、解释和生成人类语言的技术,其核心任务是通过计算机程序来模拟人类对语言的认知和使用过程,结合计算机科学、人工智能、语言学和心理学等多个学科的知识,旨在打破人类语言和计算机语言之间的障碍,实现无缝的交流与互动。 局限性: 处理歧义性、理解抽象概念、处理隐喻和讽刺等。 NLP任务 NLP技术使计算机能够执行各种复杂的语言处理任务,如中文分词、子词切分、词性标注、文本分类、实体识别、关系抽取、文本摘要、机器翻译、自动问答等。 中文分词(Chinese Word Segmentation, CWS): 将连续的中文文本切分成有意义的词汇序列。正如中文语言的词与词之间没有像英文那样的明显分隔(如空格),所以无法直接通过空格来确定词的边界。 1234英文输入:The cat sits on the mat.英文切割输出:[The | cat | sits | on | the | mat]中文输入:今天天气真好,适合出去游玩.中文切割输出:["今天", "天气", "真", &qu ...
算法学习
未读链表 链表刷题记录,基于代码随想录整理。 快速索引方法分组 203 移除链表元素(虚拟头结点) 707 设计链表(五大操作) 206 反转链表(双指针 / 递归) 24 两两交换链表中的节点(虚拟头结点 + 模拟) 19 删除链表的倒数第 N 个结点(双指针) 160 链表相交(对齐尾部 + 双指针) 142 环形链表 II(快慢指针 + 数学推导) 虚拟头结点:203、707、24 双指针:19、160 快慢指针:142 反转:206(双指针 / 递归) 203. 移除链表元素 问题描述 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。 示例 1: 12输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5] 示例 2: 12输入:head = [], val = 1输出:[] 示例 3: 12输入:head = [7,7,7,7], val = 7输出:[] 提示: 列表中的节点数目在范围 [0, 104] 内 1 < ...
本篇是数组与链表的入门综述,目标是建立「存储结构 → 操作代价 → 场景选择」的统一认知。 学习路径快速索引 先看数组:连续内存、查询快、增删慢。 再看链表:离散内存、增删快、查询慢。 最后对比:根据业务特点选择结构。 数组 定义、性质、局限与二维连续存储。 链表 类型、存储方式、定义与增删操作。 对比 频繁查询优先数组,频繁增删优先链表。 数组 定义: 数组是存放在连续内存空间上的相同类型数据的集合 性质: 数组下标都是从0开始的; 数组内存空间的地址是连续的; 数组的元素不能删除,只能覆盖。 局限: 因为数组在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址; 注:使用C++,要注意vector 和 array的区别,vector的底层实现是array,严格来讲vector是容器,不是数组 不同编程语言的内存管理是不一样的,以C++为例,在C++中二维数组是连续分布的。 12345678910111213141516#include <iostream>#include <bits/stdc++.h> ...
课程主页:CS336 (Spring 2025) 这篇文章是 CS336 的导读页,重点是「为什么学」「发展脉络」「当前前沿」。 为什么要学习这门课? 研究人员正逐渐与底层训练细节脱节: 早期:会自己实现并训练模型。 中期:会下载开源模型(如 BERT)做微调。 当下:很多场景只调用闭源 API(GPT/Claude/Gemini)。 主要制约因素: 大模型训练成本极高(算力、时间、资金)。 头部模型技术报告不完整,系统化学习材料不足。 发展脉络(时间线) 语言模型演进 前神经网络时期(2010 年代之前) 英语信息熵语言模型:Shannon 1950 n-gram 大规模应用(机器翻译/语音识别):Brants et al., 2007 神经网络基本组件(2010 年代) 神经语言模型:Bengio et al., 2003 Seq2Seq:Sutskever et al., 2014 Adam 优化器:Kingma et al., 2014 注意力机制:Bahdanau et al., 2014 Transformer:Vaswani et al., 2017 ...
算法学习
未读数组 数组刷题记录,基于代码随想录整理。 快速索引方法分组 704 二分查找(边界定义) 27 移除元素(快慢指针) 977 有序数组平方(双端指针) 209 长度最小子数组(滑动窗口) 59 螺旋矩阵 II(模拟) 58 区间和(前缀和) 44 开发商购买土地(二维切分 + 前缀思想) 二分:704 双指针:27、977 滑动窗口:209 模拟:59 前缀和:58、44 704. 二分查找 问题描述: 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果 target 存在返回下标,否则返回 -1。 你必须编写一个具有 O(log n) 时间复杂度的算法。 示例 1: 123输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4 示例 2: 123输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1 提示: 你可以假设 ...
在完成 GitHub Pages 静态站点的搭建之后,接下里就是绑定自己的域名。这里我自己买的是阿里云的域名,所以我就以阿里云为例,完整记录从 DNS 解析配置到强制 HTTPS 的全流程。 配置 DNS 解析 登录阿里云控制台,进入域名列表页面,找到需要绑定的域名,点击进入解析设置。 注:域名状态必须为正常 才能进行后续操作。若是刚购买的域名,需经历注册局审核、实名认证及备案等流程,耐心等待即可。 进入解析设置页面后,点击【添加记录】,需分别添加以下两类记录: A 类型记录(共 4 条) GitHub Pages 使用以下四个固定 IP,需逐一添加: 记录类型 主机记录 记录值 A @ 185.199.108.153 A @ 185.199.109.153 A @ 185.199.110.153 A @ 185.199.111.153 主机记录填 @:代表直接通过 https://你的域名.com 访问,无需 www 前缀 记录值填 GitHub IP:这四个 IP 是公开固定值,一般不会变动,可直接使用 阿里云需逐条添加:不支持逗号分隔多值, ...
在日常使用 Linux 终端查阅和管理文件时,我们偶尔会遇到包含中文字符的文件名或路径无法正确显示、呈现各种乱码的现象。本文将简单记录遇到这一问题的原因分析及修复过程。 问题描述 在学校服务器终端中执行诸如 ls 等读取目录的命令时,中文文件名或路径没法正确显示,有些还会抛出类似于 Cannot set LC_CTYPE to default locale 的警告提示。由于终端配置的缺陷,原本正常的中文文件名被解析成无法辨认的乱码或者以各种转义字符的形式出现: 原因分析 出现该问题的主要原因是:当前的 Linux 系统语言环境(Locale)未能正确加载对 UTF-8 的支持。 具体表现为系统中虽然 LANG 环境变量被设置成了 en_US.UTF-8 ,但是系统内核里尚未生成对应的 Locale 文件。 当遇到这种配置不一致的情况时,系统为了保证基础指令的运行,会导致终端回退到纯英文的传统 C 环境。由于 C 环境仅支持标准的 ASCII 字符集而不能处理多字节编码(如 UTF-8 编码的中文字符),于是系统只能强行将所有非英文字符全部执行转义,最终我们在屏幕上看到的效果即是“乱码 ...








