自注意力机制(self-attention)
一句话总结:自注意力机制让序列中的每个元素能够直接关注序列中所有其他元素,从而捕捉长距离依赖关系,是Transformer架构的核心组件。
多头自注意力机制
-
将Query、Key、Value分成多个头并行计算,每个头关注序列的不同方面
-
优势:增强模型表达能力,不同头可关注局部语义关系或长距离依赖关系
-
例如:在句子"我 喜欢 吃 苹果,因为 它 富含 维生素"中,一个头关注"我"和"喜欢"的主谓关系,另一个头关注"苹果"和"维生素"的因果关系
应用场景
-
Transformer架构:完全基于自注意力机制,摒弃了传统RNN和CNN
-
NLP任务:机器翻译、文本摘要、情感分析等,BERT和GPT等大模型的核心组件
-
计算机视觉:ViT (Vision Transformer)将图像分块后应用自注意力机制
互注意力机制(cross-attention)
一句话总结:互注意力机制用于建立两个不同序列之间的关联,是Transformer解码器中连接编码器和解码器的关键组件。
核心原理
-
与自注意力的区别:
-
自注意力:Query、Key、Value均来自同一序列
-
互注意力:Query来自一个序列,Key和Value来自另一个序列
-
-
Transformer中的应用:
-
在Transformer解码器中,互注意力层接收来自编码器的输出作为Key和Value,解码器的前一层输出作为Query
-
允许解码器在生成每个目标词时,关注源序列中的所有位置
-
应用场景
-
机器翻译:解码器通过互注意力机制关注源语言句子中的相关部分
-
多模态任务:如图像描述生成,文本查询与图像特征进行互注意力计算
-
检索增强生成(RAG):用户查询与检索到的文档片段进行互注意力计算
图神经网络(GNN)
一句话总结:图神经网络是专门处理图结构数据的神经网络,通过节点、边和全局属性建模,可捕捉复杂关系数据中的模式。
核心概念
-
图网络定义:在拓扑空间内按图结构组织以进行关系推理的函数集合,由DeepMind、谷歌大脑等机构于2018年提出
-
基本组成:
-
节点(Node):表示实体,具有属性向量
-
边(Edge):表示实体间关系,可有向或无向
-
全局属性(Global):表示整个图的特征
-
-
图网络块(GN Block):核心计算单元,通过同步或异步方式更新节点属性
主要类型
-
图卷积网络(GCN):基于谱分解或空间变换,实现局部感知与权值共享
-
图注意力网络(GAT):引入多头注意力机制,动态识别节点关联性
-
图自编码器(GAE):支持无监督节点嵌入学习
-
图生成网络(GGN):用于生成特定属性的目标图
-
图循环网络(GRNN):适用于时序图数据与动态交互场景
应用场景
-
社交网络分析:用户关系挖掘、社区发现
-
推荐系统:捕捉用户-物品复杂交互
-
化学分子预测:分子结构建模
-
知识图谱:实体关系推理
-
交通网络:流量预测、路径规划
coarse to fine技术
一句话总结:Coarse-to-Fine是一种从粗略到精细的渐进式处理方法,先获取全局概览再逐步优化细节,提高效率和鲁棒性。
核心思想
-
先粗后细:先进行快速、低精度的全局处理,再逐步聚焦于关键区域进行精细优化
-
优势:减少计算开销、避免局部最优、提高鲁棒性
应用场景
-
图像处理与计算机视觉:
-
物体检测和分割:Mask R-CNN先进行区域候选框提取(coarse),再进行精细的像素级分割(fine)
-
目标姿态估计:先利用稀疏关键点匹配计算出粗略的位姿,再用精细的像素级优化提高精度
-
3D生成:Ultra3D通过coarse-to-fine的双阶段设计,先生成coarse mesh再进行精细建模
-
-
自然语言处理:
-
机器翻译:先生成粗略翻译,再进行细节优化
-
文本摘要:先识别关键句子,再进行精炼
-
-
其他领域:
-
语音识别:先进行粗略分词,再进行精细音素识别
-
医学影像分析:先定位病变区域,再进行细节分析
-
json文件格式
一句话总结:JSON是一种轻量级、易读易写的数据交换格式,基于JavaScript对象语法但独立于语言,广泛用于Web应用数据交互。
核心特点
-
语法规则(必须严格遵守):
-
键名必须用双引号包裹:单引号/无引号均非法
-
值类型有限:仅支持字符串、数字、布尔值、数组、对象、null
-
末尾不能有多余逗号:最后一个元素后禁止加逗号
-
禁止注释:标准JSON不支持注释
-
-
合法JSON示例:
json
{
"id": 1,
"name": "张三",
"age": 20,
"isStudent": true,
"hobbies": ["编程", "阅读"],
"address": {
"city": "北京",
"district": "朝阳区"
},
"score": null
}
与JavaScript对象的区别
表格
| 特性 | JSON | JavaScript对象 |
|---|---|---|
| 键名 | 必须双引号包裹 | 可省略/单引号/双引号 |
| 值类型 | 仅支持字符串、数字、布尔、数组、对象、null | 支持所有JS类型(undefined、函数、日期等) |
| 注释 | 不支持 | 支持 |
| 末尾逗号 | 禁止 | 部分浏览器允许 |
| 本质 | 字符串(文本) | 内存中的对象(数据结构) |
核心操作
-
序列化:将JS对象→JSON字符串(
JSON.stringify()) -
解析:将JSON字符串→JS对象(
JSON.parse())
API key
一句话总结:API Key是用于身份验证和授权的唯一密钥,确保应用程序或用户对服务的安全访问,是API调用的"通行证"。
核心概念
-
定义:API Key是一种标识符,用于验证和授权应用程序或用户对服务器的访问权限
-
作用:在请求和响应之间进行身份验证和授权控制,实现安全的数据传输
获取与使用
-
获取方式:
-
注册并登录到服务管理界面
-
创建API Key并填写相关信息(名称、描述、访问权限等)
-
服务端生成唯一API Key值
-
京东云示例:访问言犀控制台-API Key,点击"创建API Key"
-
-
使用方法:
-
在HTTP请求header中添加:
Authorization: Bearer <api-key> -
不同服务的Base URL不同(如阿里云百炼有北京、新加坡、弗吉尼亚等区域)
-
管理注意事项
-
安全性:API Key是非常重要的机密信息,应妥善保管
-
存储:不要明文存储在代码中,建议使用环境变量或密钥管理工具
-
权限:可设置不同权限级别(如只读、读写等)
-
有效期:可设置长期有效或特定有效期
.sh文件
一句话总结:.sh文件是Shell脚本文件,用于在Unix/Linux系统中执行自动化任务和系统管理,是命令行操作的"批处理"。
核心概念
-
定义:.sh文件是使用Shell脚本语言编写的脚本文件,在Unix和类Unix系统上运行
-
本质:一系列命令的集合,可包含变量、流程控制和系统命令调用
编写与执行
-
编写步骤:
-
选择文本编辑器(如vi、vim、nano)
-
创建文件并保存为.sh扩展名(如
myscript.sh) -
添加Shell脚本代码,首行通常为Shebang(如
#!/bin/bash)
-
-
执行步骤:
-
添加执行权限:
chmod +x myscript.sh -
执行脚本:
./myscript.sh或sh myscript.sh
-
核心语法要素
-
变量:使用
$符号访问变量值 -
流程控制:支持条件语句(if-else)、循环语句(for、while)等
-
注释:使用
#符号 -
参数传递:可通过命令行传递参数给脚本
注意事项
-
Shebang行:必须正确指定Shell解释器(如
#!/bin/bash) -
执行权限:脚本文件必须具有可执行权限才能直接运行
-
错误处理:建议添加适当的错误处理机制
YAML文件格式
一句话总结:YAML是一种人类可读的数据序列化格式,语法简洁、支持注释和复杂结构,常用于配置文件和数据交换。
核心特点
-
可读性:设计目标是易于人类阅读和编写
-
结构:使用缩进表示层级关系,支持键值对、列表和嵌套结构
-
注释:支持
#注释,这是JSON不具备的 -
类型:自动推断数据类型,也可显式指定
基本语法
-
键值对:
name: 张三 age: 20 isStudent: true -
列表:
hobbies: - 编程 - 阅读 -
嵌套结构:
address: city: 北京 district: 朝阳区 -
多行字符串:
description: | 这是一个多行 字符串示例
与JSON对比
表格
| 特性 | YAML | JSON |
|---|---|---|
| 可读性 | 更高,更接近自然语言 | 较低,严格语法 |
| 注释 | 支持 | 不支持 |
| 类型推断 | 自动推断 | 需显式指定 |
| 缩进 | 语义重要 | 仅用于可读性 |
| 使用场景 | 配置文件、数据交换 | Web API、数据交换 |
应用场景
-
配置文件:Docker Compose、Kubernetes等使用YAML作为配置文件格式
-
数据交换:在需要人类可读性的数据交换场景
-
文档生成:Swagger等API文档工具使用YAML描述API
argparse包
一句话总结:argparse是Python标准库中的命令行参数解析模块,用于创建用户友好的命令行接口,自动处理参数解析和帮助信息生成。
核心功能
-
参数解析:自动处理命令行参数和选项
-
类型验证:支持多种数据类型(字符串、整数、浮点数等)
-
帮助生成:自动生成帮助文档和用法说明
-
错误处理:提供清晰的错误提示
基本使用流程
-
创建解析器对象
import argparse parser = argparse.ArgumentParser(description='程序描述') -
添加参数:
# 添加位置参数 parser.add_argument('input_file', help='输入文件路径') # 添加可选参数 parser.add_argument('-o', '--output', help='输出文件路径') parser.add_argument('-v', '--verbose', action='store_true', help='详细输出') -
解析参数
args = parser.parse_args() -
使用参数:
input_path = args.input_file output_path = args.output verbose = args.verbose
高级功能
-
子命令:支持创建类似Git的子命令结构
-
参数组:将相关参数分组显示
-
自定义类型:可定义自己的参数类型转换函数
-
互斥组:定义互斥参数(只能选择其中一个)
优势
-
简化命令行接口开发:无需手动处理sys.argv
-
一致性:提供统一的命令行体验
-
可维护性:参数定义集中,易于修改
-
用户友好:自动生成帮助信息,错误提示清晰
import argparse
parser = argparse.ArgumentParser(description='文件处理工具')
parser.add_argument('input', help='输入文件路径')
parser.add_argument('-o', '--output', default='output.txt', help='输出文件路径')
parser.add_argument('-c', '--compress', action='store_true', help='启用压缩')
parser.add_argument('-l', '--level', type=int, choices=, help='压缩级别')<websource>source_group_web_23</websource>args = parser.parse_args()
print(f'输入文件: {args.input}')
print(f'输出文件: {args.output}')
print(f'是否压缩: {args.compress}')
print(f'压缩级别: {args.level}')