机器学习 Machine Learning

机器学习是为计算机提供数据,而非指令
计算机利用数据识别特征

监督学习 Supervised Learning

在监督学习中,计算机基于成对的输入输出训练集,模拟一个映射的函数

分类 Classification

生成一个函数,将输入映射到离散输出
notion image
这里举了个根据气压、湿度对天气进行分类的例子
通过颜色来区分天气情况,并根据当天的气压、湿度,在坐标轴上标出对应的点

最近邻分类 Nearest-Neighbor Classification

这里的白点代表着需要被分类的日子,我们不难想到,可以尝试通过找和它最近的点的颜色,把这个颜色赋给他

k-邻近分类 k-nearest-neighbors

这里指的是,选择 k 个最近的点,把这 k 个中某一数量最多的特征赋给白点

感知器学习 Perception Learning

notion image
这种方法中,我们尝试创建一个决策边界,即图中的这条黄线,来划分不同的特征
缺点:数据很杂乱,找到一条完美划分的线,不得不妥协

线性方程

这里我们引入线性方程来辅助计算
  • Rain w₀ + w₁x₁ + w₂x₂ ≥ 0
  • No Rain otherwise
这里我们将大于 0 的变量输出为 1,否则是 0。分别代表是否下雨
这里我们可以分别得到两组向量,
这样可以得到函数:
notion image

更新权重

notion image
:表示第 i 个特征的权重。 • :学习率,控制每次更新的步长。 • :数据点的真实标签。 • :当前权重下,数据点 x 的预测输出。 • :数据点 x 的第 i 个特征值。 这里是计算实际值(label)与当前函数值的差,与学习率相乘,进行一些修正
以下是对我困惑的一些解答,关于为什么会出现 x
通过  影响误差修正:如果    很小,说明该特征对误差的贡献较小,那么在更新时,权重的调整幅度应该相应较小。这样,模型就能够在每个特征上做出合适的调整,而不会过度调整那些不太重要的特征。

阈值函数 threshold function

这个阈值函数大概主要是实现上面 的,将数值转换成 0 或 1
其中,“阈值” 大概就是特征之间的数值分界

硬阈值 Hard threshold

notion image
缺点是无法表达不确定性(只有 0 或 1)

软阈值 Soft threshold

notion image
这个相对更加平滑

支持向量机 Support Vector Machine

这种方法使用一个位于决策边界附近的附加向量(支持向量)来在分离数据时做出最佳决策

最大间隔分离器 Maximum Margin Separator

notion image
上图中,三个边界都做到了正确分类。然而,前两个的线都画的与某一边很接近,很容易造成误差,相比之下不如第三种
第三种比较适当,可以较完美分割两种特征的边界,叫做最大间隔分离器

高维分界

SVM 的一个优点是能够表示高维的决策边界,比如非线性的
notion image

回归 Regression

回归是把输入点映射到连续值的学习任务
notion image
这里有个形状类似的图片,不过不是为了分类,而是为了找到一个函数来拟合变量间/输入输出间的关系

损失函数 Loss Function

损失函数用于量化以上学习结果中,函数的损失(错误)情况
一般来说,损失值越大,则表明这个函数越差

分类问题

分类问题中,可以使用 0-1 损失函数
也就是预测时,Loss 不变;错误时,Loss ++

两种损失函数

这里给出了两种损失函数:L1 与 L2
其中,L2 对于异常值的“惩罚”更加严厉(有平方)

过拟合 Overfitting

过拟合是指模型对于训练数据训练的太好了,导致函数只能对训练数据起作用(Loss 很小),对于测试数据就失灵了
notion image
大概像这样

正则化 Regularzation

上面提到了过拟合,这种往往是因为模型为了降低 loss,变得过于复杂导致的
为了避免这种情况,我们可以讲复杂程度引入 Loss 函数,“惩罚”过于复杂的模型
这里的 λ 是一个常数,用于调节“惩罚复杂度”的系数

交叉验证

我们可以通过把所有数据分成 测试集训练集 来进行检验,避免过拟合
通过在 训练集 上进行训练,得到一个模型,然后通过 测试集 进行测试,衡量模型泛化的能力
然而,这样会使得模型无法学习整个数据集。当遇到数据集较小的时候,会导致训练效果不佳

k 折交叉训练 k-Fold Cross-Validation

为了解决上面的问题,我们使用 k 折交叉训练这个方法
  1. 讲数据分成 k 个子集
  1. 进行 k 次训练,每次留出一个数据集作为测试集
  1. 得到 k 个不同的模型评估,可以对评估取平均,来估计泛化程度

scikit-learn

这是一个 python 中包含机器学习算法的库

示例:假钞

原始数据

原始数据大概这样,最后一列是是否为假钞的布尔值
notion image

导入库

首先,导入库;然后选择模型

主要代码

强化学习 Reinforcement learning

强化学习在每个动作后,通过奖励/惩罚的方式给智能体一些反馈
notion image

学习过程

  1. 环境向智能体提供一个状态
  1. 智能体基于状态执行动作
  1. 环境返回动作后的状态,以及动作带来的奖励/惩罚

马尔科夫决策过程 Markov Decision Processes

强化学习可以被视作一个马尔科夫决策过程,它有以下特性:
  • Set of states S
  • Set of actions Actions(S)
  • Transition model P(s’ | s, a)
当前状态 s,做出动作 a 后转换到状态s‘的概率
  • Reward function R(s, a, s’)
在状态 s 下采取动作 a 转移到状态 s‘ 后所得到的奖励

Q-Learning

Q 学习是强化学习的一种模型,函数 Q(s, a)输出在状态 s 下采取行动 a 的值估计

步骤

  1. 最初,所有 Q 值都是 0
  1. 采取行为,收到奖励
  1. 根据当前奖励和预期的未来奖励,估计 Q 值
  1. 通过考虑新旧的估计情况,更新 Q 函数
这样一来,Q学习算法能够在学习过程中不断改进自己的决策,而不需要每次都从零开始

公式

其实和前面的感知器有点像,也是借助学习率、差值,进行不断的逼近

贪心决策算法 Greedy Decision-Making

这里利用了一个 max,用来选择能让下一个状态下收益最大的那个行为 a
这里的γ是一个系数,用来调整对于未来奖励的重视程度

含义

notion image

利用 与 探索 的权衡

  • 利用指的是智能体选择当前已知最优的动作,这些动作通常是基于智能体之前的经验和当前的 Q 值估计的。通过选择回报最高的动作,智能体能够在当前已知的情况下获取最好的结果。
  • 探索指的是智能体选择尚未尝试过的动作,即使这些动作当前的回报较低。通过探索,智能体能够尝试新的策略,发现可能的更好路径。
这里其实和之前陷入 local minima 的困境一样,这也是贪心算法的弊端:因为短期利益而放弃其他路线的探索

ε 贪婪算法

在这种算法中,我们将ε设置为希望随机移动的频率。
  • 以 1-ε的概率,算法选择最佳移动(利用)
  • 以ε的概率,算法选择随机移动(探索)
这个感觉和模拟退火有点像,就是在尽可能最大化当下利益的情况下,加一些小的“扰动”,以尝试不同的可能

结束后反馈

Q 学习如果在每步动作后都进行一个反馈,会导致计算量很大
可以考虑先随机运行,当最终结束时,根据结果给一个奖励/惩罚,感觉有点像强化学习

函数逼近

传统的 Q 学习中,Q 值通常是用一个“Q 值表”来进行表示和赋值
然而,随着情况变得复杂,再弄一个 Q 值表已经不太现实
因此,我们可以尝试用一个函数来逼近 Q 值表,借助函数实现赋值

无监督学习 Unsupervised Learning

相较于监督学习带有 label、或者输出数据,无监督学习只有输入数据存在,AI 将在这些数据中学习一些特征

聚类 Clustering

这是一种无监督学习任务,把输入数据组织成组,使得相似的对象落在同一组中

k-means 聚类

notion image
将空间中的所有数据点进行映射,然后在空间中随机放置 k 个聚类中心
然后,每个聚类被分配所有比其他中心更接近其中心的点(这是中间图片)
在迭代过程中,聚类中心移动到所有这些点的中间(右侧的状态)
当重复此过程后,每个点仍然保持在之前相同的聚类中时,我们就达到了平衡,算法结束,留下点在聚类之间划分。
Loading...
昊卿
昊卿
一个普通的干饭人🍚
最新发布
大一上学期总结
2025-3-9
4.1 多层感知机
2025-3-7
3.4 softmax 回归
2025-3-5
3.3 线性回归的简洁实现
2025-3-5
3.2 线性回归的从零开始实现
2025-3-5
3.1 线性回归
2025-3-5