1.AI识别
- 1.bitgrit 生成式 AI API 文档
生成式 AI 假图像检测 API 可用于以编程方式检测假图像(即由生成式 AI 创建的图像)。 - 2.X Virality Prediction API 旨在预测推文的潜在病毒式传播力。
- https://bitgrit.net/api/docs/x_virality_prediction
2.GraphRAG
所有性能改进技术都有一个缺陷:token 的使用和推理时间都会增加。
支持 GraphRAG 的基本流程是建立在先前对图机器学习的研究和代码库上的:LLM 处理全部私有数据集,为源数据中所有实体和关系创建引用,并将其用于创建 LLM 生成的知识图谱。利用生成的图谱创建自下而上的聚类,将数据分层并组织成语义聚类(在图三中由颜色标识)。这种划分让预先总结语义概念和主题成为可能,从而更全面地理解数据集。在查询时,两种结构均被用于填充 LLM 回答问题时的上下文窗口。
3.什么是低秩自适应(LoRA)?
LoRA 是一种加速 LLM 微调同时消耗更少内存的技术。
这不涉及对整个基础模型进行微调,因为这可能需要耗费大量的时间和金钱。
相反,它会向模型中添加少量可训练参数,同时保持原始模型参数不变。
为什么选择 LoRA?
尽管我们使用 LoRA 为模型添加了更多层,但它实际上有助于节省内存。
这是因为与大模型相比,较小的层(A 和 B)需要学习的参数较少,而可训练参数较少意味着需要存储的优化器变量较少。
因此,尽管整体模型看起来更大,但就内存使用而言实际上更高效。
什么是等级?
秩决定了添加到 LLM 原始权重的可训练矩阵的维度。它控制微调的表达能力和精度。
等级越高 = 可能的变化越详细,可训练的参数越多
等级越低 = 计算开销越少,但适应的精度可能会更低
任何人工智能问题中最重要的因素是数据
4. 线性变换
线性变换是两个向量空间之间的映射V → W,保留向量加法和标量乘法的运算。
实际上,将矩阵A应用于向量x以获得另一个向量y(通过操作Ax = y)是一种线性变换。
import numpy as np
import matplotlib.pyplot as plt
# Linear Transformation of a Square
T = np.array([[1, 2], [2, 1]]) # Transformation matrix
square = np.array([[0, 0, 1, 1, 0], [0, 1, 1, 0, 0]]) # Original square
transformed_square = np.dot(T, square) # Apply transformation
# Plot Original and Transformed Square
plt.figure(figsize=(8, 4))
# Original Square
plt.subplot(1, 2, 1)
plt.plot(square[0], square[1], 'o-', color='blue')
plt.title('Original Square')
plt.xlim(-1, 3)
plt.ylim(-1, 3)
plt.axhline(0, color='grey', linewidth=0.5)
plt.axvline(0, color='grey', linewidth=0.5)
plt.grid(True)
# Transformed Square
plt.subplot(1, 2, 2)
plt.plot(transformed_square[0], transformed_square[1], 'o-', color='red')
plt.title('Transformed Square')
plt.xlim(-1, 3)
plt.ylim(-1, 3)
plt.axhline(0, color='grey', linewidth=0.5)
plt.axvline(0, color='grey', linewidth=0.5)
plt.grid(True)
plt.show()
线性变换经常用于:
降维:PCA利用线性变换将高维数据映射到低维空间
数据变换:对数据集进行规范化或标准化是一种线性变换
特征工程:通过组合现有特征来创建新特征。
5. 特征向量和特征值
特征向量和特征值表示变换的“轴”。
特征向量是经过线性变换后方向不变的输入。即使方向不变,大小也可能变。这个大小,即特征向量放大或缩小的量,就是特征值。
想象一下当你旋转地球仪时,除了两极之外,每个位置都朝向一个新的方向。它们的方向不会改变。
这是特征向量的直观示例。
形式上,对于矩阵A和向量v,如果Av = λv,则λ是特征值,v是A的特征向量。
import numpy as np
import matplotlib.pyplot as plt
# Eigenvectors and Eigenvalues
A = np.array([[1, 2], [2, 3]])
eigenvalues, eigenvectors = np.linalg.eig(A)
print_matrix(A)
# Plotting
fig, ax = plt.subplots()
# Origin
origin = [0, 0]
# Plot each eigenvector
for i in range(len(eigenvalues)):
ax.quiver(*origin, eigenvectors[0, i], eigenvectors[1, i], scale=3, scale_units='xy', angles='xy')
ax.set_xlim(-1, 1)
ax.set_ylim(-1, 1)
ax.set_aspect('equal')
ax.grid(True)
ax.set_title('Eigenvectors of A')
plt.show()