跳至主要內容
pptg

pptg

费大厨辣椒炒肉真是太好吃了!

ppNginx
nginx命令行工具 by Golang
youi
个人todo软件 by Flutter
ppMenu
个人Mac的便捷菜单栏 by Swift
ppBlog
个人主页
lookAtMe
悬浮提醒桌面小助手
pp宇宙
无聊画画
词向量的演进过程

在NLP任务中,文本是没有办法直接参与数学计算的,因此首先要考将文本转换为数字,也就是文本向量。

分词器: 文本的拆分方法

分词器的目的是将连续的文本序列切分成有意义的、可供模型处理的基本单元(Token)。 这个“基本单元”的定义,随着计算能力、数据规模和任务需求的变化而演变。 其发展主线是:从追求人类可理解的“词”,转向追求模型高效处理的“子词”

基于规则(字典)的分词

  • 原理:维护一个词典。分词时,采用匹配策略在文本中查找最长能匹配的字符串。
  • 经典算法
    • 正向/反向/双向最大匹配法:从左到右(或从右到左)扫描句子,每次尝试匹配当前位置开始的最长词典词。
    • 例子:句子“我爱北京天安门”。
      • 词典包含 {“我”, “爱”, “北京”, “天安门”, “天安”}。
      • 正向最大匹配结果为 “我 / 爱 / 北京 / 天安门”(而不是“天安 / 门”)。
  • 优点:简单、快速、对于词典内的词准确率高。
  • 缺点
    • 未登录词(OOV)问题:无法识别词典外的新闻、专名、网络用语等。
    • 歧义切分问题:如“羽毛球拍卖完了”,可切为“羽毛/球拍/卖完/了”或“羽毛球/拍卖/完/了”。
    • 依赖高质量词典:不同领域需要定制词典,维护成本高。

pptg大约 9 分钟
动手学深度学习

跟沐神学 吼吼吼,上学不跟沐神好好学,上班之后来换债了

原文里的conda,这里会换成uv,如果遇到问题再说吧,uv实在是太快了

1. 深度学习基础

1.1 环境安装

这里推荐是用GPU,我用的MAC,所以先用CPU顶一下,后面遇到需要GPU的地方再去租云GPU吧

# 新建项目
mkdir ml_learn
cd ml_learn

# uv初始化
uv init

# 添加环境
uv add jupyter
uv add torch
uv add pandas
uv add matplotlib
uv add d2l
uv add torchvision


# 下载D2L
curl https://zh-v2.d2l.ai/d2l-zh-2.0.0.zip -o d2l-zh.zip
unzip d2l-zh.zip && rm d2l-zh.zip

pptg大约 3 分钟
注意力机制 和 Transformer

1. 注意力机制

非参注意力池化层

Nadaraya-Watson核回归

https://www.bilibili.com/video/BV1xoW4zaEke/?spm_id_from=333.1387.favlist.content.click&vd_source=981e3c11cfc628a411ae06b92a0546e9

Q: 查询向量,当前Token关注什么 K: 键向量,当前Token能给其它Token提供什么信息 V: 值向量,这个词实际包含的信息内容


pptg小于 1 分钟
进程管理

1. 进程和线程

1.1 进程

代码经过编译后,会生成可执行文件。当执行这个可执行文件时,它会被加载到内存中,接着CPU会执行程序中的指令。这个运行中的程序,就称之为进程(Process)

在一个进程运行过程中,难免会去读磁盘、网络的IO,这个时间相对是比较长的。此时,CPU 不需要阻塞等待数据的返回,而是去执行另外的进程。当硬盘数据返回时,CPU 会收到个中断,于是 CPU 再继续运行这个进程。

1.1.1 进程的状态

进程不是一直运行的,一个进程至少具备五种基本状态,即创建状态、运行状态、就绪状态、阻塞状态、结束状态


pptg大约 6 分钟
大模型幻觉

1. 什么是大模型幻觉

大模型幻觉是指大型语言模型(LLMs)生成的内容与现实世界事实或用户输入不一致的现象。这种现象可以分为两大类:

  • 事实性幻觉:模型生成的内容与可验证的现实世界事实不一致。
  • 忠实性幻觉:模型生成的内容与用户的指令或上下文不一致。

2. 产生幻觉的原因

  • 训练数据问题
    • 数据质量低:数据中可能包含错误、噪声或矛盾信息,导致模型学习到不准确的模式
    • 数据覆盖不足:模型可能缺乏足够的上下文或领域知识, 导致在生成内容时出现不准确或不一致的情况
    • 数据时效性:模型无法回答最新事件的问题,因为训练数据可能已经过时
  • 模型架构问题
    • 架构缺陷:比如可能无法处理长距离的依赖关系
    • 训练目标不对齐:LLM的训练过程大多数是基于Next Token Prediction的方式进行预训练, 因此,它只能保证文本生成的流畅性,而无法辨别所遇到的信息是否真实或准确。
  • 推理问题:上下文质量差、不充分

pptg大约 1 分钟
python异步编程

1. 关键字 async、await

python中,asyncawait两个关键字用于定义异步操作。

  • async: 定义异步函数,表明该函数是协程,可以在其中使用await来等待其他异步操作完成。异步函数的执行不会阻塞事件循环,而是会立即返回一个协程对昂。
  • await: 用于在异步函数内等待其他协程执行完成/。遇到await时,事件循环会挂起当前的协程,并执行其它任务,直到协程完成后再恢复。

pptg大约 7 分钟
python 字典原理

1. Python字典

Python字典(dict)是一种可变容器模型,用于存储键值对(key-value)映射关系。它是Python中最重要、最常用的数据结构之一。

主要特性:

  • 无序性(Python 3.7+开始保持插入顺序)
  • 键必须是可哈希的不可变类型
  • 值可以是任意Python对象
  • 动态扩容,自动调整大小
  • 提供快速的查找、插入和删除操作

2. 实现原理

  • 计算哈希值:对键调用hash()函数得到哈希值
  • 计算索引:index = hash(key) & (mask),其中mask = table_size - 1
  • 处理冲突:使用开放定址法中的伪随机探测
  • 插入/查找:在计算的位置开始探测,直到找到空槽或匹配的键

pptg大约 3 分钟
如何写好提示词

1. Prompt 到底用 # 还是 <></>

目前的开源项目,存在两种主流的prompt标记符号。下面以两个自动优化提示词的项目为例子:

  • \#: prompt_optimizer
  • <>: coze_loop

个人感觉还是<>效果更好一点,可以明确的划定一个指令块的区间,只是可读性不太友好

2. 为什么LLM的对话模型分为system、user、assistant?


pptg大约 7 分钟
python GC

1. 垃圾回收机制

python的垃圾回收机制主要分为三大块:

  • 引用计数法: 最基本的回收方法
  • 标记清除法: 用于回收循环引用的部分
  • 分代回收法: 用于解决频繁扫描“标记清除列表”的性能问题

1.1 引用计数法

python通过引用计数器来进行垃圾回收。每个对象的基础结构里都维护了引用计数字段,如果他的引用数量是0,则会触发回收机制。

// 这是Python对象在C层面的基础结构
typedef struct _object {
    Py_ssize_t ob_refcnt;  // 引用计数
    PyTypeObject *ob_type; // 类型指针
    // ... 其他字段根据类型不同而变化
} PyObject;

pptg大约 4 分钟
python元类

1. 什么是元类

在python中,一切皆对象,包括类本身。元类是创建类对象的类。就像类是用来创建实例的模板一样,元类是创建类的模板。

class MyClass:
    pass

obj = MyClass()

print(f"实例的类型: {type(obj)}")        # <class '__main__.MyClass'>
print(f"类的类型: {type(MyClass)}")      # <class 'type'>
print(f"type的类型: {type(type)}")       # <class 'type'>

# 所以:
# 实例 obj 是 MyClass 类的对象
# 类 MyClass 是 type 类的对象
# 元类 type 是 type 类的对象(type是自身的实例)

pptg大约 4 分钟