BP的机器学习日记(吴恩达机器学习课程笔记)

本文围绕机器学习展开,介绍了深度Q学习、ε-贪婪策略等强化学习内容,还涉及支持向量机、PCA算法等监督学习和数据预处理方法。同时阐述了小批量、软更新等训练策略,以及噪声处理、正则化等提升模型性能的手段,还提及数据集划分和神经网络相关知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3.3

深度Q学习(Deep Q-Learning,DQN)

是强化学习领域中的一种重要算法,它结合了传统的Q学习与现代的深度学习技术。Q学习是一种基于值的强化学习方法,用于估计在一个给定状态执行不同动作的价值(Q值),以便确定最优策略。而深度学习通过多层非线性变换来学习复杂函数,能够在高维度和连续空间中有效建模。

在传统的Q学习中,Q值通常存储在一个表格(Q-table)中,但在复杂环境中,由于状态空间过大,直接使用表格变得不切实际。深度Q学习正是为了解决这个问题,它不再使用表格存储Q值,而是用一个深度神经网络来近似Q函数,即 ( Q(s, a; \theta) ),其中 ( s ) 表示状态,( a ) 表示动作,( \theta ) 是神经网络的参数。

以下是深度Q学习的关键要素:

  1. ε-greedy策略:为了探索与利用之间的平衡,智能体在选择动作时会按照一定的概率(epsilon)随机选取动作,其余情况则选择当前Q值最高的动作。
  2. 经验回放缓冲区(Experience Replay):为了避免连续采样数据之间的高度相关性,引入了一个存储先前经历过的状态、动作、奖励、下一个状态和是否结束(episode termination)的信息的缓冲池。在训练过程中,可以从这个缓冲池中随机抽样批次数据进行学习,这样有利于打破即时连续数据带来的相关性,提高学习效率。
  3. 固定Q目标(Fixed Q-Targets):深度Q学习中常采用一个技巧,即维持两个网络:一个用于选择动作(在线网络),另一个用于计算目标Q值(目标网络)。目标网络的参数定期更新为在线网络参数的副本,从而稳定学习过程,解决深度学习中常见的训练不稳定问题。
  4. Huber Loss 或 Smooth L1 Loss:在优化过程中,使用一种特殊的损失函数来缓解连续动作值估计中的梯度爆炸或消失问题。
  5. 折扣因子γ(Gamma):在Q值更新公式中,γ用于对未来奖励的衰减考虑,体现了强化学习中的“远视”特性,即不仅关心即时奖励,也关心未来的潜在奖励。

通过上述方法,深度Q学习成功地将深度神经网络应用到了强化学习中,使得智能体可以在诸如Atari游戏这样的高维空间中学习出有效的策略,这一突破对于推动深度强化学习的发展起到了重要作用。后续研究还发展出了多种改进算法,如双DQN(Double DQN)、优先级经验回放(Prioritized Experience Replay)以及 Dueling Network Architectures 等。

ε-贪婪策略

在强化学习和其它机器学习领域中,“ε-贪婪”策略是一种探索与利用(Exploration vs. Exploitation)问题的经典解决方案。在强化学习中,智能体需要在已知最优策略与探索未知策略之间作出权衡。ε-贪婪策略就是这样一种混合策略:

● Exploitation(利用):智能体根据当前已知的最佳策略行动,选择当前估计价值最高的动作。
● Exploration(探索):智能体随机选择动作,即使这不是当前认为的最佳动作,从而有机会发现潜在更好的策略。

ε-贪婪策略的实现方式是:

在每个决策时刻,智能体会以一定概率(即 ε)随机选择一个动作进行探索,这个概率通常是较小的常数值(比如0.1),其余概率(1-ε)则会选择当前认为价值最高的动作进行利用。随着学习过程的推进,智能体可以根据需要逐渐调整 ε 的值,使之慢慢减少,从而在学习初期更多地探索,后期更多地利用已经学到的经验。

具体来说,若智能体在某个状态下,它以 ε 的概率随机选择一个动作,以 1-ε 的概率选择当前策略下的最优动作。这种方法能够在保证学习过程中持续探索新信息的同时,也不至于因为过度探索而忽视了已学到的有效策略。

小批量 软更新

小批量(Mini-batch):

在机器学习特别是深度学习中,小批量是指在每次迭代更新模型参数时,不是一次性使用所有训练数据,而是从整个训练集中随机抽取一小部分数据作为一个批次进行计算。小批量梯度下降法是批量梯度下降(Batch Gradient Descent)和随机梯度下降(Stochastic Gradient Descent,SGD)的一种折衷方案。

● 批量梯度下降:在每次迭代时使用全部训练样本计算损失函数的梯度,然后更新权重。这种方式精确但是计算成本高,特别是在数据集很大的情况下。
● 随机梯度下降:在每次迭代时仅使用一个训练样本来计算梯度并更新权重,这种方式计算效率高,但梯度估计可能存在较大波动,导致训练过程不够稳定。
● 小批量梯度下降:取一个平衡点,每次迭代时使用一个小批量(如32、64、128等样本数量)来计算平均梯度,然后据此更新权重。这种方法既能享受到SGD的高效性,又能通过样本批处理缓解单样本梯度估计带来的噪声,使得训练过程更加稳定。

软更新(Soft Update):

在强化学习或者其他一些机器学习场景中,软更新通常指的是模型参数更新的一种平滑策略,尤其是涉及到策略迭代或者目标网络更新的时候。相比于硬更新(Hard Update,直接替换旧参数为新参数),软更新会在一定程度上保留旧参数的信息,缓慢地向新参数过渡。

具体实现上,软更新通常使用指数移动平均(Exponential Moving Average,EMA)或其他加权平均的方式,例如在深度Q学习(Deep Q-Network, DQN)中,目标网络的参数更新公式可能是这样的:

target_network_params = τ * new_params + (1 - τ) * target_network_params

其中,new_params 是在线网络(learning network)最新的参数,target_network_params 是目标网络(target network)当前的参数,而 τ(tau)是一个介于0和1之间的超参数,表示新参数对目标网络参数更新的影响程度。通过这种方式,目标网络的参数会缓慢地趋近于在线网络的新参数,而不是立即替换,从而避免了目标函数突然变化可能导致的学习不稳定问题。

噪声

在机器学习中,噪声(Noise)是指在数据集里那些不可预测、随机、不规则或不准确的部分,这些部分不能反映底层数据生成过程的真实规律。噪声的存在可能会干扰模型学习真实的关系,导致模型泛化能力减弱或过拟合等问题。

  1. 数据收集噪声:在数据采集的过程中,由于传感器误差、人为录入错误、测量工具精度限制等原因,数据可能出现偏离真实值的随机误差。例如,在图像识别中,像素级别的噪点、在文本数据中拼写错误、在用户行为数据中用户的临时冲动行为等。
  2. 标签噪声:是指数据的标签(即目标变量)不准确。这可能是由于人工标注时的主观判断差异,或者是自动标注系统的错误导致。例如,在分类任务中,一张猫的图片被错误地标记成了狗。
  3. 系统噪声:在动态系统或复杂环境中,自然的随机变化也可能被视为噪声。例如,在金融市场的价格预测中,突发事件造成的股价异常波动就属于系统噪声。
  4. 决策边界附近的模糊性:在有些情况下,即使是真实的、高质量的数据,但由于现象本身的复杂性,有些样本点可能恰好落在决策边界附近,造成模型很难完美区分的情况,这种模糊性也可以视为一种噪声。

在机器学习实践中,对抗噪声的影响通常需要通过以下方式:

● 数据清洗和预处理:去除或纠正明显的错误数据,或使用降噪技术改善数据质量。
● 使用鲁棒性更强的模型:如集成学习方法、正则化手段(L1/L2正则化)、Robust优化方法等。
● 特征选择和降维:减少噪声特征对模型的影响。
● 强化学习中的探索与利用策略:在强化学习中,适当的探索机制可以有助于模型克服纯粹依赖已有经验(可能受到噪声影响)的局限性。

总之,噪声是机器学习中难以避免的现象,有效地管理和减轻噪声对模型性能的影响是提升模型性能和泛化能力的重要环节。

监督学习

支持向量机

支持向量机(Support Vector Machine, SVM)是一种监督学习模型,主要应用于分类和回归分析任务。它通过找到一个最优的超平面(在二维空间中是一条直线,在更高维度则是超平面或超曲面)来进行数据划分,使得两类数据间隔最大化,从而实现分类任务。SVM不仅可以处理线性可分的数据,还可以通过核函数(Kernel Trick)将非线性可分的问题转化为高维空间中的线性可分问题。

SVM的核心思想是找到一个决策边界(分离超平面),使得这个边界距离两类样本中最靠近它的样本(支持向量)的距离最大。这个最大间隔的思想有助于减少过拟合,提高模型的泛化能力。

对于非线性问题,SVM引入了核函数,常见的核函数有线性核、多项式核、高斯核(RBF核)等。核函数的作用是将原始输入空间中的数据映射到高维特征空间,使得在高维空间中原本非线性可分的数据变为线性可分。

SVM的优点主要包括:

  1. 泛化能力强,对高维数据有较好的处理效果。
  2. 可以有效防止过拟合,尤其适用于中小规模数据集。
  3. 通过核函数可以很好地处理非线性问题。

然而,SVM也有一些局限性,如对于大规模数据集训练速度较慢,且需要合理选择核函数及相关的超参数(如惩罚参数C、核函数参数γ等)。此外,SVM不适合处理含有大量特征的大规模数据集,因为它对内存的需求较高。针对这些问题,后来出现了许多改进和支持向量机的扩展版本。

3.2

PCA算法

PCA(Principal Component Analysis,主成分分析)是一种统计学方法,也是机器学习领域中常用的数据预处理和降维技术。PCA旨在通过线性变换将高维数据转换为一组各维度互不相关的变量,新变量被称为“主成分”,且它们按照方差的重要性排序,第一个主成分具有最大的方差,反映了数据集内部变异性最大的方向;第二个主成分与第一个正交,并且具有次大的方差,以此类推。

PCA的核心步骤如下:

  1. 数据标准化:首先对原始数据进行中心化处理(减去均值使得数据在每个特征上的均值为0),有时还需要进行尺度规范化(如除以标准差,使得每个特征具有单位方差)。
  2. 协方差矩阵计算:计算数据特征之间的协方差矩阵或相关矩阵,以便了解不同特征间的统计关系。
  3. 特征值分解:对协方差矩阵或者其相关矩阵进行特征值分解,得到特征向量和对应的特征值。
  4. 选取主成分:依据特征值大小,选择最大的k个特征值对应的特征向量作为新的基,构成投影矩阵。这些特征向量定义了一个新的坐标系。
  5. 数据投影:将原始数据投影到这个新的低维空间中,这样就可以降低数据的维度,同时尽可能保留原有数据的变异信息。

PCA常用于:

● 数据压缩:减少数据的存储需求和计算复杂度。
● 数据可视化:将高维数据降维后可以在二维或三维空间中可视化。
● 特征选择与提取:去除冗余信息,挑选出最能够代表数据变化趋势的特征。
● 优化模型性能:降低过拟合的风险,提高模型训练速度。

在Python中,可以通过诸如sklearn.decomposition.PCA这样的库来实现PCA算法。

协方差矩阵(Covariance Matrix)

是统计学和多元数据分析中的一个重要概念,它是一个用来描述多个随机变量之间联合变化情况的矩阵。在一个包含n个随机变量的数据集中,协方差矩阵是一个n×n的对称矩阵,其中第(i,j)位置上的元素表示的是第i个随机变量和第j个随机变量之间的协方差。

对于一个由随机向量 X = (X₁, X₂, …, Xₙ) 形成的数据集,协方差矩阵 C 是通过对每个变量对(Xᵢ, Xⱼ)计算协方差并将其填充到相应位置上形成的,矩阵的对角线上的元素是每个随机变量自身的方差。

具体地,协方差矩阵的元素C[i][j](这里假设下标从0开始)定义为:

其中,

● ( E[\cdot] ) 表示期望值,
● ( \mu_i ) 和 ( \mu_j ) 分别是随机变量 ( X_i ) 和 ( X_j ) 的均值,
● 如果 ( i = j ),则 ( C_{ii} ) 就是变量 ( X_i ) 的方差。

协方差矩阵有以下基本特性:

● 对称性:( C{ij} = C{ji} ) 对于所有 ( i, j ) 成立;
● 正定性(半正定性):协方差矩阵的所有特征值都是非负的;
● 单位阵缩放不会改变协方差结构:如果所有变量都乘以同一个标量,则协方差矩阵会被同一标量的平方倍所缩放;
● 它提供了有关变量间线性关系的信息:如果协方差为正值,说明两者倾向于同向变动;如果为负值,则说明二者倾向于反向变动;零协方差意味着两个变量在统计意义上独立(但在实际应用中,零协方差并不严格等价于统计独立)。

在Python中,可以使用NumPy库中的numpy.cov()函数轻松计算数据集的协方差矩阵。例如,如果你有一个二维数组 data,每一列代表一个随机变量,每一行代表一个观测样本,那么调用 cov_matrix = np.cov(data, rowvar=False)(默认情况下,rowvar=False 表示按列计算协方差矩阵,即每一列为一个变量)将会返回数据的协方差矩阵。

强化学习

强化学习
s,a,R(a),s`
强化学习(Reinforcement Learning, RL)是一种机器学习范式,它模拟了有机体如何通过与环境的互动,在试错中学习最佳行为策略的过程。在强化学习中,智能体(Agent)在给定环境中不断探索并采取行动以达到某种目的。该目的通常表现为最大化累积奖励(Reward)。

强化学习的核心组成部分包括以下几个关键要素:

  1. 智能体(Agent):这是学习系统的核心,负责观察环境状态、做出决策并执行动作。
  2. 环境(Environment):智能体所处的外部世界,它可以是物理环境、虚拟环境或其他抽象系统。环境对智能体的动作做出响应,并提供新的状态和相应的奖励信号。
  3. 状态(State):在某一时刻,环境可以处于不同的状态。智能体基于当前状态决定下一个要执行的动作。
  4. 动作(Action):智能体根据当前状态从可能的动作集合中选择一个执行,这种选择会影响环境状态的变化。
  5. 奖励(Reward):每当智能体执行一个动作后,环境会给予一个即时的奖励信号。奖励可以是正数(鼓励那种行为)、负数(惩罚那种行为)或零(中性结果)。智能体的目标是学习一种策略,使其在长时间内累计的奖励最大化。
  6. 策略(Policy):智能体的行为规则,它决定了在每个状态下智能体应选择哪个动作。强化学习的目的就是寻找最优策略。

强化学习的学习过程通常分为探索(Exploration)和利用(Exploitation)两个方面:

● 探索:智能体尝试未被充分测试过的动作,以获取更多关于环境的信息。
● 利用:智能体根据目前学到的知识选择预期能带来最高奖励的动作。

常见的强化学习算法包括Q-learning、SARSA、DQN(Deep Q-Networks,深度Q学习网络)、Actor-Critic方法及其各种变体,以及使用深度学习技术构建的更为复杂的算法,如A3C(Asynchronous Advantage Actor-Critic)、Dueling Network Architectures、Proximal Policy Optimization(PPO)等。

强化学习已被成功应用于诸多领域,如机器人控制、游戏AI(比如AlphaGo、AlphaStar等)、自动驾驶、资源管理、推荐系统等。其强大的适应性和决策能力使其成为解决复杂序列决策问题的有效工具。

马尔科夫决策过程(Markov Decision Process,MDP)

是一种经典的数学模型,主要用于描述和解决决策问题,尤其是在涉及不确定性和长期奖励的情境下。MDP是强化学习的基础理论框架之一,它结合了马尔科夫链的概念和决策理论,允许研究者分析和设计智能体在一系列状态中选择动作以最大化长期收益的问题。

MDP的基本组成部分包括:

  1. 状态(States):智能体面临的环境可以处于一系列不同的状态。状态通常用 ( S ) 表示,它是所有可能状态的集合。
  2. 动作(Actions):智能体在每个状态下可以选择执行的一个或多个动作。动作集合通常用 ( A ) 表示,并且每个动作 ( a ) 是在特定状态 ( s ) 下可取的。
  3. 状态转移概率(Transition Probabilities):从当前状态 ( s ) 执行动作 ( a ) 后转移到下一个状态 ( s’ ) 的概率,记为 ( P(s’|s,a) )。这意味着下一个状态只依赖于当前状态和采取的动作,而不依赖于过去的更早状态,这一特性称为马尔科夫性质。
  4. 奖励函数(Reward Function):智能体在执行动作后立即获得的瞬时反馈,通常用 ( R(s, a, s’) ) 表示,即从状态 ( s ) 执行动作 ( a ) 转移到状态 ( s’ ) 时获得的奖励。长期奖励通常通过折扣因子 ( \gamma ) 进行折现,使得未来的奖励相对于当前奖励有所衰减。
  5. 策略(Policy):策略 ( \pi ) 描述了智能体在每个状态下选择动作的方式,它可以是确定性的(指定每个状态下应该采取的具体动作)或随机性的(给出每种动作的概率分布)。

目标是在MDP中找到一个最优策略,该策略能最大化智能体从现在直到未来的累积期望折扣奖励,也称为价值函数或期望回报。通过动态规划、蒙特卡洛方法、Temporal Difference(TD)学习、以及与深度学习结合的方法(如DQN、DDPG、A2C等)可以求解MDP问题。这些方法有助于智能体在没有显式指导的情况下通过与环境交互学习最优行为策略。

随机环境

在强化学习中,马尔科夫决策过程(MDP)是一种形式化的框架,用于描述智能体在随机环境中进行决策的问题。MDP假设环境是一个马尔科夫过程,即下一状态仅依赖于当前状态和智能体采取的行动,而与历史状态无关。在随机环境中,环境的反应和状态转移是随机的,也就是说,即使智能体在相同的状态下采取相同的行动,也可能导致不同的后续状态和奖励。

结合随机环境的MDP具有以下特点:

  1. 状态空间(State Space): 环境可能存在的所有状态的集合,智能体会根据当前所在状态做出决策。
  2. 行动空间(Action Space): 在每个状态下,智能体可以选择的一系列行动。
  3. 状态转移概率(Transition Probability): 从当前状态 ( s ) 执行动作 ( a ) 后转移到下一个状态 ( s’ ) 的概率 ( P(s’|s, a) ) 是随机的,意味着智能体无法确切预测下一个状态是什么,只能知道概率分布。
  4. 奖励函数(Reward Function): 智能体执行动作后收到的即时奖励也是一个随机变量,通常表示为 ( R(s, a, s’) ),表示从状态 ( s ) 执行动作 ( a ) 转移到状态 ( s’ ) 时的期望奖励。
  5. 折扣因子(Discount Factor): 为了考虑未来的奖励,引入了 ( \gamma ) (通常在 0 到 1 之间),用于对未来的奖励进行折扣,以平衡短期和长期利益。

智能体的目标是在这样的随机环境中通过学习找到最优策略,使得长期累积折扣奖励最大。这通常通过解决贝尔曼方程、采用蒙特卡洛方法、 temporal difference 学习或者使用神经网络及其他现代强化学习算法(如Q-Learning、SARSA、DQN、A3C等)来实现。这些方法允许智能体在与随机环境的交互过程中逐步改进其决策策略,以应对不确定性并优化其表现。

贝尔曼方程

贝尔曼方程(Bellman Equation)是动态规划(Dynamic Programming)理论中的核心概念,由理查德·贝尔曼(Richard Bellman)提出,用于描述多阶段决策问题中每一阶段的状态价值函数与其后继阶段的价值函数之间的递归关系。贝尔曼方程在强化学习和最优控制等领域中有着广泛的应用。

在最基础的形式中,贝尔曼方程可以表述为:

对于一个离散时间马尔科夫决策过程(Markov Decision Process, MDP),设 ( V(s) ) 表示在状态 ( s ) 下的期望价值函数(即从状态 ( s ) 开始,执行最优策略所能得到的未来总折扣奖励的期望值),( r(s, a, s’) ) 是从状态 ( s ) 采取动作 ( a ) 转移到状态 ( s’ ) 时获得的即时奖励,( \gamma ) 是折扣因子(discount factor),( p(s’|s, a) ) 是执行动作 ( a ) 后从状态 ( s ) 转移到状态 ( s’ ) 的概率,那么贝尔曼方程可以写作:

这个方程表达的是:任何一个状态 ( s ) 的最优价值等于在该状态下采取所有可能动作中最大期望价值的动作,这个期望价值是由当前的即时奖励加上未来状态 ( s’ ) 的折扣价值函数综合而成。

在连续时间和连续状态空间的环境下,最优控制中的贝尔曼方程常常以哈密顿-雅可比-贝尔曼方程(Hamilton-Jacobi-Bellman, HJB)的形式出现,这是一个偏微分方程。

贝尔曼方程是解决动态规划问题的关键,通过求解贝尔曼方程,可以得到最优策略,即在任何状态下采取最优动作的规则,确保整体的累积奖励最大。在强化学习中,智能体就是在不断地通过与环境的交互来近似这个最优价值函数,进而找出最优策略。

2.29

均值归一化

在机器学习中,均值归一化(Mean Normalization)是一种常见的数据预处理技术,也被称作零均值规范化(Zero-Mean Normalization)或中心化(Centering)。其基本思想是将数据集中的特征值调整,使特征的均值变为0,这样可以消除特征的均值效应,使得数据具备更好的可比性和模型的收敛速度更快。

具体操作步骤如下:

  1. 计算特征的均值(mean):
    对于每个特征列,计算所有样本在该特征上的均值。
  2. 对特征进行归一化处理:
    对于数据集中的每个样本,对该特征值减去该特征的均值,得到的结果就是归一化后的特征值。

数学表达式可以表示为:

其中,( x ) 是原始特征值,( \mu ) 是该特征所有样本值的平均值,( x_{normalized} ) 是归一化后的特征值。

均值归一化有助于统一特征的尺度,特别是对于那些具有较大均值差异的特征,这有助于避免模型学习过程中的权重更新受到特征尺度影响,从而有利于模型训练和优化。在许多机器学习算法中,如支持向量机(SVM)、神经网络等,数据预处理阶段常常会使用均值归一化或结合标准差归一化(Z-score标准化)来准备输入数据。

降低特征数量

方法通常称为特征选择(Feature Selection)或特征降维(Feature Dimensionality Reduction)。以下是一些降低特征数量的常见方法:

特征选择方法:

  1. 基于统计量的方法:

● 过滤法(Filter Methods):通过计算每个特征与目标变量的相关性、互信息、卡方检验等统计量来评估特征的重要性。例如,Pearson相关系数、皮尔逊卡方检验、互信息(Mutual Information)等。
● 单变量特征选择:例如方差选择法(只保留方差高于一定阈值的特征)、ANOVA F值检验、T检验等。

  1. 嵌入法(Embedded Methods):

● 这些方法在构建模型的同时进行特征选择,例如正则化方法(L1正则化,也称为Lasso,会导致一部分特征系数趋近于零,从而实现了特征选择)。

  1. 包裹法(Wrapper Methods):

● 这类方法把特征选择视为一个搜索过程,通过迭代构建模型并评估特征子集的性能来选择特征。例如递归特征消除(Recursive Feature Elimination, RFE)和遗传算法等。

特征降维方法:

  1. 线性降维:

● 主成分分析(Principal Component Analysis, PCA):通过线性变换将原始高维数据变换为一组各维度线性无关的表示,称为主成分。选择贡献最大的几个主成分,可以降低数据的维度。
● 线性判别分析(Linear Discriminant Analysis, LDA):在分类问题中,LDA通过最大化类别间差异和最小化类别内差异,将数据投影到最优超平面,实现降维。

  1. 非线性降维:

● 流形学习(Manifold Learning):如局部线性嵌入(Locally Linear Embedding, LLE)、拉普拉斯特征映射(Laplacian Eigenmaps)和ISOMAP等方法,用于非线性数据降维。
● 自编码器(Autoencoders):一种深度学习方法,通过编码器和解码器结构学习数据的压缩表示,可以实现特征的降维。

在实际应用中,选择何种方法取决于数据的特性、任务目标以及模型的性质。通过这些方法可以去除冗余或无关紧要的特征,从而简化模型、提升模型解释性、减少计算成本,并有可能提高模型的泛化能力。

正则化方法何时使用

通常是在定义损失函数时使用的,而不是在激活函数阶段。正则化是机器学习中用于防止模型过拟合的技术,它通过在损失函数中添加一个正则化项(或惩罚项)来限制模型参数的大小,促使模型选择更简单的解决方案。

例如,在训练神经网络的过程中,当我们计算损失函数时,不仅考虑预测值与真实标签之间的差异(如均方误差、交叉熵等),还会添加一个正则化项来约束模型参数的复杂度。最常见的正则化形式有L1正则化和L2正则化:

● L1正则化(Lasso Regularization):
在损失函数后面添加模型权重矩阵参数绝对值的和,鼓励参数稀疏性,即部分权重被迫为零,从而简化模型。

● L2正则化(Ridge Regression 或者 Weight Decay):
在损失函数后面添加模型权重矩阵参数平方和,使得权重值倾向于较小,从而降低模型的复杂度。

这里的 (\lambda) 是正则化强度的超参数,它控制正则化项的影响程度。

总之,正则化是在优化目标(即损失函数)层面实施的策略,而非激活函数阶段。激活函数负责非线性转换,决定神经元如何响应输入信号;而正则化则影响模型训练时参数更新的方向和步长,以避免模型过于复杂并对训练数据过度拟合。

卷积神经网络

卷积神经网络(Convolutional Neural Network, CNN)是一种专门针对网格结构数据(如图像)设计的深度学习模型。CNN主要应用于计算机视觉领域,但也被扩展到了其他如自然语言处理和其他领域。

CNN的特点在于其独特的层级结构,它包含卷积层(Convolutional Layers)、池化层(Pooling Layers)、全连接层(Fully Connected Layers)以及其他可能的附加层如归一化层、激活层等。

  1. 卷积层:这是CNN的核心组件。在卷积层中,一组可学习的滤波器(或称卷积核)在输入数据(如图像)上进行滑动,通过元素级的乘法和累加(卷积操作)来提取局部特征。每个滤波器都会生成一个新的特征图(Feature Map),这些特征图能够捕捉图像中的边缘、纹理、颜色分布等多种信息。
  2. 池化层:池化操作如最大池化或平均池化,可以降低特征图的空间维度,从而减少计算量并提高模型对位置变化的容忍度。池化层通过计算区域内特征的最大值、平均值或其他统计量来获得区域的概要信息。
  3. 全连接层:在CNN的较深层次或临近输出层的位置,通常会包含全连接层。全连接层的作用是将先前提取到的特征进行整合,用于最后的分类或回归任务。
  4. 激活函数:如同其他神经网络一样,CNN中的每个计算单元(神经元)也会在其输出上应用一个非线性激活函数,如ReLU(Rectified Linear Unit)或sigmoid函数,以增加模型表达复杂函数的能力。

通过一系列的卷积和池化操作,CNN能够从原始输入数据中提取越来越抽象的特征,并最终用于分类、检测、分割等多种任务。CNN的成功之处在于其对输入数据局部结构的敏感性和权重共享机制,这大大减少了模型参数的数量,并使得模型能够在大型图像数据集上进行有效训练。
2.27

2.27

回归问题

“回归问题”(Regression Problem)这一术语源自早期的统计学研究,特别是19世纪英国生物学家和统计学家弗朗西斯·高尔顿(Francis Galton)的工作。他在研究父母身高与子女身高之间的关系时,首次提出了“回归”(regression)的概念。

“回归”一词最初用来描述这样一个现象:子女的身高既不会完全继承最高父母辈的身高,也不会完全降到最低父母辈的身高,而是趋于中间值,即所谓的“回归”到祖先身高分布的平均趋势。高尔顿通过分析数据发现了一个统计规律,即极端观测值在后续世代中的表现趋向于平均值,这就是最早的回归分析雏形。

在现代统计学和机器学习中,“回归问题”特指一类预测模型问题,目标是预测一个连续变量的值,也就是建立因变量(目标变量)与一个或多个自变量之间的函数关系。这里的“回归”不再是生物学意义上的回归,而是泛指预测值“回归”到一个真实的连续数值范围,通过拟合函数尽可能准确地逼近数据的实际分布趋势。

所以,尽管名称来源于最初的生物学研究,但现在“回归问题”已经成为预测连续数值型输出问题的标准术语。在统计学和机器学习领域,它主要关注如何通过已有的输入数据来估计和预测连续的输出变量的值。

2.26

无监督学习 聚类

k-means算法

K-means算法是一种广泛应用的无监督学习聚类算法,主要用于将一组未标记的数据集划分为K个簇(cluster),使得每个簇内的数据点彼此相似度高,而不同簇间的相似度低。算法目标是在数据空间中找到K个中心点(称为质心或centroid),并通过迭代的过程将每个数据点分配到最近的质心所在的簇,然后再根据分配结果更新各个簇的质心,直至质心不再显著移动,算法收敛。

以下是K-means算法的主要步骤:

  1. 初始化:
    ○ 选择K个初始质心,可以随机从数据集中选取K个样本作为初始质心,也可以使用更高级的初始化方法(如K-means++)来减少算法对初始质心选择的敏感性。
  2. 分配(Assignment):
    ○ 对于数据集中每一个数据点,计算它与K个质心之间的距离(通常是欧几里得距离)。
    ○ 根据距离将每个数据点分配给最近的质心所在的簇。
  3. 更新(Update):
    ○ 更新每个簇的质心为该簇中所有数据点的均值(几何中心),即重新计算每个簇中所有成员数据点的平均值。
  4. 迭代(Iteration):
    ○ 重复第二步(分配)和第三步(更新),直到满足停止条件,如质心的变化小于某个阈值,或者达到预设的最大迭代次数,此时认为算法收敛。

K-means算法的主要优点包括简单易用、计算效率相对较高,特别适用于处理大数据集。但其也有一些局限性:

● 对初始质心的选择敏感,可能导致不同运行结果间的聚类质量差异较大。
● 对于非凸形状的数据分布或大小差异悬殊的簇,K-means的效果可能不佳。
● 必须预先确定K值,即簇的数量,这是一个难以决策的问题,实际应用中往往需要多次试验验证。

此外,K-means算法假设簇是球形的(各向同性的),也就是说,簇的形状应当接近圆形,如果数据分布不符合这种假设,算法性能也会受到影响。对于这种情况,可以考虑其他的聚类算法,如层次聚类、DBSCAN、谱聚类等。

失真成本函数

在机器学习领域中,失真成本函数(Distortion Cost Function)通常指的是在无监督学习中,尤其是在聚类算法中用来衡量数据点与其所属聚类中心之间差异的一种量化方式。失真成本函数的目标是尽量减小数据点到其聚类中心的距离总和,以此评价聚类结果的质量。

在K-means聚类算法中,失真成本函数常常表现为平方误差和(SSE, Sum of Squared Errors),也称为失真度量(distortion metric),计算公式如下:

[ \text{Distortion} = \sum{i=1}{n}\sum_{j=1}{K} r{ij} \cdot ||x_i - \mu_j||^2 ]

其中:

● ( n ) 是数据集中样本的总数。
● ( K ) 是聚类的数量。
● ( x_i ) 表示第 ( i ) 个样本。
● ( \mu_j ) 表示第 ( j ) 个聚类的质心(中心点)。
● ( r{ij} ) 是指示变量,如果样本 ( x_i ) 被分配到聚类 ( j ),则 ( r{ij} = 1 ),否则为 ( 0 )。

每次迭代中,K-means算法都会重新计算各个样本到质心的距离,并基于失真成本函数最小化的原则更新聚类中心,直到聚类结果不再发生变化或者达到预设的迭代次数上限为止。

在监督学习中,我们提到的成本函数或损失函数通常指的是有监督学习模型的训练过程中,衡量模型预测输出与真实标签之间差距的函数,如均方误差(MSE)、交叉熵损失等。这些损失函数在目的和计算方式上与无监督学习中的失真成本函数有所不同。

在K-means聚类算法中,尽管有多个聚类(比如有两个聚类),但实际上只有一个整体的失真成本函数(Distortion Cost Function),这个函数是用来衡量整个数据集中所有样本点到各自所属聚类中心的距离总和。具体到两个聚类的情况,成本函数仍然是基于所有样本点的,而非为每个聚类单独设立一个成本函数。

所以,无论有多少个聚类,成本函数都是针对整个数据集来定义和优化的,它的目的是找到最优的聚类中心分配方案,使得所有样本点到其所属聚类中心的失真度量(如平方误差)最小化。而不是为每个聚类分别定义一个成本函数。

异常检测

异常检测(Anomaly Detection)是一种数据挖掘和机器学习技术,旨在识别和区分数据集中不同于正常行为或模式的数据点。异常检测通常用于在大量数据流中找出罕见、意外或潜在有问题的事件,这些事件在很多情况下代表了重要的信息或潜在风险。异常可以是单个数据点(点异常)、连续时间段内的行为(时间序列异常)或者是与其他数据点在多维空间中的关系异常(群体异常)。

异常检测在诸多领域有广泛应用,例如:

● 金融风控:检测信用卡欺诈、异常交易等。
● 工业监控:检测生产设备的异常状态以预防故障和维护设备。
● 网络安全:识别恶意活动或网络攻击。
● 医疗诊断:分析医疗数据发现罕见病症或病状变化。
● 日志分析:在系统或应用日志中定位异常行为或错误。
● 物联网(IoT):监控传感器网络,及时发现异常信号或设备异常。

异常检测的方法和技术多样,主要包括但不限于:

● 统计方法:基于数据分布(如正态分布)或统计特性(如均值、方差、四分位数)来判断数据点是否偏离常态。
● 距离度量:如基于欧氏距离、马氏距离等检测离群值(outliers)。
● 机器学习方法:包括基于聚类(如K-means、DBSCAN)、密度估计(如LOF)、支持向量机、神经网络(如自编码器)等技术的异常检测模型。
● 时间序列分析:针对时间序列数据,分析趋势、周期性和季节性变化,发现违背常规模式的时间序列片段。

异常检测的关键挑战在于:

● 数据不平衡:异常事件往往稀少,导致训练数据偏向正常情况,不利于模型学习异常模式。
● 噪声影响:区分真正的异常与单纯的数据噪声较为困难。
● 动态环境:异常检测系统需适应随时间变化的数据分布和异常类型。

高斯分布

高斯分布(Gaussian Distribution)和正态分布(Normal Distribution)实际上指的是同一个概率分布模型。在统计学和概率论中,高斯分布因其发明者卡尔·弗里德里希·高斯而得名,但它也广泛被称为正态分布,这是因为它的形状是对称且稳定的,最典型的表现为“钟形曲线”。

正态分布的特点如下:

  1. 对称性:分布曲线关于均值μ对称。
  2. 集中趋势:分布曲线的峰值位于均值μ处,这也是数据最可能出现的值。
  3. 尺度参数:标准差σ决定了分布的宽度,越大的σ意味着分布越宽,反之则越窄。
  4. 概率密度函数(Probability Density Function, PDF)为:
    [ f(x|\mu,\sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}} e{-\frac{(x-\mu)2}{2\sigma^2}} ]
    其中μ是均值,σ是标准差。
  5. 累积分布函数(Cumulative Distribution Function, CDF)为正态分布积分的结果,记为Φ(x)。
  6. 标准化正态分布:当均值μ=0,标准差σ=1时,称为标准正态分布,其PDF简化为:
    [ f(z) = \frac{1}{\sqrt{2\pi}} e{-\frac{z2}{2}} ]

正态分布在自然界和社会科学的众多领域中都表现出极强的应用价值,许多自然现象和社会现象都可以近似地用正态分布来描述,如身高、体重、考试成绩等,只要这些变量是由大量独立微小因素叠加而成的,依据中心极限定理,其抽样分布趋向于正态分布。此外,在统计推断、误差分析、质量管理等领域,正态分布也是核心工具之一。
模型评估
是一个至关重要的环节,用于衡量模型在训练集、验证集或测试集上的表现好坏。实数评估指标(Real-valued evaluation metrics)是指那些可以量化模型性能的具体数值,它们可以帮助我们比较不同模型的优劣,或者跟踪同一模型在不同阶段(如训练过程)的性能变化。

以下是一些常用的实数评估指标:

  1. 回归问题:
    ○ 均方误差(Mean Squared Error, MSE):衡量预测值与真实值之间差异的平方和的平均值。
    ○ 均方根误差(Root Mean Squared Error, RMSE):MSE的平方根,更能直观反映预测值与真实值之间的平均偏差。
    ○ 平均绝对误差(Mean Absolute Error, MAE):预测值与真实值之差的绝对值的平均数,对异常值不太敏感。
  2. 分类问题:
    ○ 准确率(Accuracy):正确分类的样本数占总样本数的比例。
    ○ 精确率(Precision):真正例(True Positives)占预测为正例的比例。
    ○ 召回率(Recall):真正例占实际正例的比例。
    ○ F1分数(F1 Score):精确率和召回率的调和平均数,综合了两者的表现。
    ○ AUC-ROC曲线下面积(Area Under the ROC Curve, AUC):用于评估二分类或多分类问题中模型的排序能力。
  3. 多分类问题:
    ○ 微平均(Micro Average)和宏平均(Macro Average):应用于多类别问题的精度、召回率或F1分数的计算方法。
    ○ 混淆矩阵(Confusion Matrix):二维表格形式,详细展示了各类别的真正例、假正例、真负例和假负例数量,可用于计算各类评估指标。

根据问题的具体性质和业务需求,选择合适的实数评估指标对模型性能进行全面客观的评估是非常重要的。

异常检测(Anomaly Detection)和监督学习(Supervised Learning)

在机器学习和数据分析中有不同的应用场景和目标。它们的区别主要在于数据标签的可用性和任务目标的不同:

异常检测

● 适用场景:
○ 数据中异常或罕见事件占比很小,而且通常没有明确标注的异常样本。
○ 目标是识别那些远离正常行为模式的数据点或事件。
○ 应用包括网络安全、工业故障检测、信用卡欺诈检测、医疗健康预警等。
● 特点:
○ 通常是非监督学习任务,因为异常样本往往是未知的,模型必须自己学会识别什么是“正常”,进而推断出哪些是异常。
○ 异常检测算法关注的是小部分离群点,而大多数数据被认为是正常数据。

监督学习

● 适用场景:
○ 数据集包含充足的带有标签(类别或数值)的样本。
○ 目标是学习从输入特征到输出标签的映射关系,并能对新数据进行预测。
○ 应用包括图像分类、文本分类、回归预测、情感分析等。
● 特点:
○ 需要有已知标签的训练数据来训练模型,模型通过学习正例和负例来预测未来未知数据的标签。
○ 可以处理两类或多类分类问题,也可以处理回归问题,关键是数据集中有足够的带标签样本供模型学习。

何时使用哪种方法:

● 当数据集中有足够多的正例和负例样本,且目标是预测新样本的类别或数值时,应优先考虑监督学习。
● 当数据集中异常样本稀少或者根本就没有标签,但希望通过分析数据分布、统计特性或学习数据内在结构来识别那些与“正常”模式不符的案例时,应该采用异常检测。

总之,异常检测更适合于处理数据集中异常事件罕见且缺乏异常标签的情况,而监督学习则适用于数据集带有丰富标签、用于训练模型做精准预测的任务。

推荐算法

是信息过滤系统的组成部分,旨在预测用户可能感兴趣的信息或物品,如电影、音乐、商品、新闻文章等,并将这些推荐内容提供给用户。推荐算法的核心目标是个性化用户体验,提升用户满意度和参与度,从而提高平台的整体活跃度和转化率。

推荐算法主要分为以下几大类:

  1. 协同过滤(Collaborative Filtering)
    ○ 用户-用户协同过滤(User-User CF):基于用户的历史行为和兴趣,寻找具有相似行为模式的其他用户,将他们喜欢的物品推荐给目标用户。
    ○ 物品-物品协同过滤(Item-Item CF):基于物品之间的相似性,推荐与用户过去喜欢的物品相似的其他物品。
  2. 基于内容的推荐(Content-based Filtering)
    ○ 该方法分析用户过去喜欢的物品的特征,然后推荐具有相似特征的新物品给用户。这种方法依赖于对物品属性的分析和理解。
  3. 混合推荐系统(Hybrid Systems)
    ○ 结合多种推荐算法的优点,如协同过滤和基于内容的推荐,或者引入更多的信息源,如用户的社交网络信息、用户画像信息等,以提高推荐效果。
  4. 矩阵分解(Matrix Factorization)
    ○ 通过降维技术,如奇异值分解(SVD)、非负矩阵分解(NMF)等,揭示用户-物品评分矩阵背后隐藏的低维结构,以实现个性化推荐。
  5. 深度学习推荐系统(Deep Learning based Recommendations)
    ○ 利用深度神经网络捕获复杂的关系和特征表示,如深度因子分解机(DeepFM)、神经网络协同过滤(Neural Collaborative Filtering, NCF)、变分自编码器(Variational Autoencoder, VAE)等。
  6. 流行度推荐(Popularity-based Recommendations)
    ○ 根据全局流行度或者近期热门程度推荐物品,这种方法简单有效,但可能忽视了个性化需求。
  7. 基于关联规则的推荐(Association Rule Mining Based Recommendations)
    ○ 发掘用户行为数据中的关联规则,例如“购买了商品A的人往往会同时购买商品B”,据此进行推荐。

推荐算法的选择取决于具体应用场景、可用数据的类型和量级,以及业务需求等因素。随着机器学习和人工智能技术的发展,推荐算法也在不断演进和创新,以适应更加复杂和个性化的用户需求。

协同过滤(Collaborative Filtering, CF)

是一种广泛应用于推荐系统中的算法,主要用于预测用户可能感兴趣的商品或内容。它的基本思想是通过分析用户与用户之间、物品与物品之间的相似性,来推断并推荐未知项给目标用户。协同过滤可以细分为两大类:

基于用户的协同过滤(User-based Collaborative Filtering)

工作原理:

● 用户基于用户的方法首先计算所有用户之间的相似度,通常是基于他们的评分历史记录,即观察哪些用户对同一组物品的评价相似。
● 当需要为某目标用户推荐新物品时,算法找出与其相似度最高的K个邻居用户(K近邻法),然后基于这些邻居用户对未被目标用户评价过的物品的评分,预测目标用户可能的评分。
● 最后,算法会推荐那些预测评分较高的物品给目标用户。

相似度计算:

● 相似度的衡量方法有很多种,比如皮尔逊相关系数、余弦相似度、调整后的余弦相似度(Adjusted Cosine Similarity)等。调整后的余弦相似度会考虑到每个用户评分习惯的差异,通过减去用户评分均值来标准化评分。

基于物品的协同过滤(Item-based Collaborative Filtering)

工作原理:

● 物品基于物品的方法则着重于分析物品之间的相似性,基于用户对不同物品的评分来推断物品间的隐含关系。
● 当要为某个用户推荐物品时,算法首先查找该用户已评分的物品与其他物品之间的相似度,然后根据相似度高的物品被该用户或其他类似用户所给出的高评分,预测用户对尚未评分的相似物品的喜爱程度。
● 最终推荐那些基于相似物品的预测评分较高的新物品给用户。

相似度计算:

● 同样地,物品之间的相似度也可以使用余弦相似度、调整后的余弦相似度或其他相似性度量方法。

协同过滤算法的关键挑战包括稀疏性问题(大量用户只对少量物品进行了评价,导致数据稀疏)、冷启动问题(对于新加入的用户或新添加的物品如何进行有效推荐)、以及计算效率等问题。针对这些问题,实际应用中可能会结合其他技术进行优化,比如引入额外的辅助信息、采用矩阵分解等方法改进模型性能。

计算
在协同过滤的某些实现中,特别是基于矩阵分解的协同过滤算法(如奇异值分解SVD、交替最小二乘法ALS等),可以通过梯度下降法来最小化参数,以优化模型。

例如,在基于矩阵分解的协同过滤中,原始的用户-物品评分矩阵R可以通过两个低秩矩阵P和Q的乘积近似得到:R ≈ PQ^T。其中,P矩阵的每一行代表用户在隐含特征空间的表示,Q矩阵的每一列代表物品在相同特征空间的表示。

优化目标通常是通过最小化预测评分矩阵与实际评分矩阵之间的残差平方和(Residual Sum of Squares, RSS)来实现的:

其中,( \mathbf{p}u ) 是用户u在隐含特征空间的向量表示,( \mathbf{q}i ) 是物品i在相同空间的向量表示。

为了最小化这个损失函数,我们可以分别对P和Q的参数进行梯度下降:

  1. 对于用户特征矩阵P的更新:

其中,( \alpha ) 是学习率,( I_u ) 是用户u有过评分的所有物品集合。
2. 对于物品特征矩阵Q的更新:

其中,( U_i ) 是给物品i打过分的所有用户集合。

梯度下降的过程会在每一次迭代中计算损失函数相对于P和Q中每一个元素的梯度,并沿梯度反方向更新参数,直到损失函数收敛或者达到预设的最大迭代次数。

需要注意的是,上述过程描述的是批量梯度下降,而在大规模数据集上,常常采用随机梯度下降(Stochastic Gradient Descent, SGD)或其他优化算法以提高计算效率。同时,实际应用中还需要考虑正则化以防止过拟合,以及其他优化技巧,如梯度截断、动量法等。

举例

假设我们有一个电影评价数据集,其中包括用户ID、电影ID以及用户对电影的评分。现在我们要使用协同过滤算法来构建一个电影推荐系统。

  1. 基于用户的协同过滤(User-Based CF)

步骤:

● 计算用户相似度:首先,我们需要计算所有用户之间的相似度,例如,可以使用皮尔逊相关系数、余弦相似度等。例如,假设用户A和用户B都评价了很多电影,如果他们对相同电影的评分高度一致,则认为这两个用户具有较高的相似度。
● 选择邻居用户:基于相似度矩阵,为待推荐电影的目标用户选择K个最相似的邻居用户。
● 预测评分与推荐:对于目标用户未评价过的电影,基于其邻居用户的评价来进行预测。例如,用户X未评价过电影Y,但用户Z(与用户X相似度很高)给电影Y打了很高的分数,那么我们就预测用户X也可能喜欢电影Y,并将电影Y推荐给用户X。

  1. 基于物品的协同过滤(Item-Based CF)

步骤:

● 计算物品相似度:首先,根据所有用户对电影的评价,计算每对电影之间的相似度。同样,可以使用相似度计算方法。
● 基于相似物品推荐:对于目标用户,找到他/她已经评价过的电影,并找到这些电影中最相似的电影,然后根据相似电影的评分来预测目标用户对未评价电影的喜好程度。
● 推荐:推荐那些与目标用户已评价电影相似度高且评分高的未评价电影给目标用户。

以一个简化的例子说明:

假设用户Alice、Bob和Charlie分别对以下电影进行了评分:

用户电影1电影2电影3
Alice534
Bob453
Charlie345

若现在要为Alice推荐一部未看过的电影,基于用户协同过滤,我们可能发现Bob与Alice的口味相近(因为他们对电影1和电影2的评分很接近),于是将Charlie给电影3的高分传递给Alice,推荐电影3给Alice。如果是基于物品协同过滤,我们会发现电影2和电影3的评分模式相似(Charlie和Bob对这两部电影的评分接近Alice对电影1的评分),因此也可能会推荐电影3给Alice。

实际实施时,协同过滤算法会更加复杂,需要处理大量的稀疏数据、冷启动问题(新用户或新物品的推荐)以及如何有效地计算和存储相似度等问题。同时,现代推荐系统通常还会结合多种算法和信息,如基于内容的推荐、混合推荐等方式来提升推荐效果。

激活函数 损失函数

激活函数和损失函数在神经网络中扮演着不同的角色,它们分别服务于模型的前向传播和模型优化两个不同的阶段。

激活函数(Activation Function):
激活函数主要用于神经网络中神经元节点输出的计算,它为神经网络引入了非线性,使得神经网络能够处理非线性问题。激活函数接收到输入信号(通常是前一层神经元的输出)后,对其进行变换,输出经过非线性变换后的结果。例如,Sigmoid、ReLU、tanh等函数都是常见的激活函数。

损失函数(Loss Function / Cost Function):
损失函数则是在训练过程中衡量模型预测结果与实际目标值之间差异的量化手段,它定义了优化的目标。在神经网络训练时,损失函数用于计算模型的预测输出与训练数据的真实标签之间的差距,通过对损失函数的最小化来更新模型的权重和偏置,逐步优化模型性能。

虽然激活函数和损失函数在功能和用途上有明显的区别,但在设计损失函数时,有时会结合激活函数的特性。特别是在二分类和多分类任务中,经常会出现这样的情况:

● 二分类任务:
○ 使用Sigmoid激活函数作为输出层的激活函数,将输出归一化到(0,1)区间,表示属于某一类的概率。
○ 损失函数通常选用二元交叉熵损失(Binary Cross-Entropy Loss),该损失函数结合了Sigmoid函数的输出,用来衡量模型预测的概率分布与真实标签的匹配程度。
● 多分类任务:
○ 输出层通常使用Softmax函数作为激活函数,它将每个类别的得分转换为概率分布,并且所有类别的概率和为1。
○ 损失函数可以选择多类交叉熵损失(Multiclass Cross-Entropy Loss),也称为Categorical Cross-Entropy Loss,它同样依赖于Softmax激活函数输出的概率分布,用于比较模型预测的概率分布与真实标签的一致性。

总的来说,激活函数和损失函数并不是相互转变的关系,它们分别在神经网络的前向传播和反向传播中发挥着重要作用,但是在某些场合下,损失函数的设计会根据激活函数的输出特性进行选择和配置。

2.25

倾斜数据集的误差指标

偏斜数据集(Skewed Dataset)指的是在分类问题中,各类别的样本数量相差悬殊,某一类或某几类样本占绝对多数,而其他类别样本相对较少的现象。这样的数据集会导致模型在训练时对少数类别的学习不够充分,进而影响模型在实际应用中的表现,特别是对少数类别的预测能力。

对于偏斜数据集,其误差主要体现在以下几个方面:

  1. 过拟合少数类别:
    如果模型过分关注少数类别的样本,可能会在少数类别上过拟合,而在多数类别上表现欠佳,因为在训练过程中模型努力去拟合稀少的异常情况,可能导致在多数类别上的泛化能力下降。
  2. 欠拟合少数类别:
    相反,由于少数类别的样本数量不足,模型可能难以捕捉到这些类别的有效特征,从而导致在少数类别上的预测错误率较高。
  3. 分类器阈值问题:
    对于基于概率输出的分类器,如逻辑回归或SVM,模型在均衡风险最小化原则下可能偏向于预测为多数类别,这会使得少数类别的样本被误分类的概率增大。
  4. 评估指标失真:
    在偏斜数据集中,常规的准确性评价指标可能掩盖问题,因为模型可能仅通过预测所有样本为多数类别就能得到较高的准确率,但实际上并未有效识别出少数类别。

应对偏斜数据集误差的方法主要包括:

● 数据预处理:
○ 过采样(Over-sampling):增加少数类别的样本量,如SMOTE算法。
○ 欠采样(Under-sampling):减少多数类别的样本量,但可能导致信息损失。
○ 结合过采样和欠采样:综合运用这两种方法平衡数据集。
● 加权训练:
○ 给予少数类别样本更大的权重,使得模型在训练过程中更加关注这些样本。
● 选择合适的评估指标:
○ 使用像精确率-召回率曲线(PR Curve)、F1 Score、AUC-ROC曲线等更适合处理偏斜数据集的评价指标。
● 算法选择与调整:
○ 选择对偏斜数据集鲁棒性较强的算法,或对模型参数进行调整以适应偏斜数据集的特性。

通过上述方法,可以一定程度上缓解偏斜数据集带来的误差问题,提高模型在各个类别上的表现均衡性。

精度 召回率

精度(Precision)和召回率(Recall)是评估分类模型性能时常用的两个度量指标,尤其在信息检索、文本分类、医学诊断、金融风控等领域广泛应用。

精度(Precision):
精度反映的是模型预测结果中,真正属于某一类别的样本所占的比例。它是针对模型预测为正例的样本集合,计算有多少是真正的正例。
如果模型的精度很高,说明它预测为正例的样本中,真正是正例的比例很大,也就是说模型在给出正例预测时很少出错。
数学公式表达为:

[ Precision = \frac{True Positives}{True Positives + False Positives} ]

这里的True Positives(TP)是指模型预测为正例且实际上是正例的数量,False Positives(FP)则是模型预测为正例但实际上是负例的数量。

召回率(Recall):
召回率又称查全率,衡量的是模型能够找出多少实际上属于正例的样本,也就是模型识别出所有正例的能力。公式表达为:

[ Recall = \frac{True Positives}{True Positives + False Negatives} ]

这里的False Negatives(FN)是指模型预测为负例但实际上是正例的数量。

举个例子,假设我们有一个垃圾邮件过滤器:

● 精度高的模型意味着–预测-- 为垃圾邮件的邮件中,大部分确实是垃圾邮件;
● 召回率高的模型意味着系统能够识别出几乎所有的垃圾邮件,即使可能将一些非垃圾邮件误判为垃圾邮件。

在实际应用中,精度和召回率往往需要综合考量,过高或过低的精度和召回率都可能带来问题。例如,在疾病诊断场景中,高召回率意味着尽量不错过任何一个患病患者(减少漏诊),而高精度则意味着不轻易将健康人误诊为患者(减少误诊)。为了平衡两者,经常使用F1分数(F-measure)或者精确召回曲线(PR Curve)来综合评价模型性能。

决策树

概念
(Decision Tree)是一种用于分类和回归分析的非参数监督学习模型,它通过一系列if-then规则形成树状结构,模拟从数据集中进行决策的过程。在决策树中,每个内部节点(非叶节点)代表一个特征或属性,每个分支代表该特征的一个可能的取值,而每个叶节点则代表一个类别标签或连续数值(在回归树中)。

决策树的构建过程通常包括以下步骤:

  1. 特征选择:
    根据某种准则(如信息增益、基尼指数、卡方检验等)选择最具有划分能力的特征,将其作为当前节点的划分依据。
  2. 节点分裂:
    根据所选特征的不同取值,将数据集划分为若干个子集,每个子集对应决策树的一个分支。
  3. 递归构建子树:
    对每个子集重复以上步骤,直到满足停止条件(如达到预定的最大深度、节点内的样本数量小于某个阈值、节点的纯度足够高等)。
  4. 剪枝:
    为了防止过拟合,可能还会进行决策树剪枝操作,去除冗余的分支,优化模型的泛化能力。

决策树易于理解、可视化,且可用于解释模型预测的原因,同时在小规模数据集上容易训练,但在大规模数据集和高度复杂的任务上可能会导致过拟合。为了避免过拟合,现代决策树算法通常会结合集成学习技术,如随机森林(Random Forest)和梯度提升决策树(Gradient Boosting Decision Trees, GBDT)等。

回归树

概念
回归树(Regression Tree)是一种机器学习中的非线性预测模型,主要用于连续数值型变量的预测任务。回归树通过一种树状结构模型对输入变量进行一系列的判断和切分,最终在每个叶节点(也称为终端节点)上输出一个预测值。

回归树的构建过程如下:

  1. 特征选择:
    树的构建始于根节点,首先选择一个最优特征和对应的分割点,这个选择基于某个准则(如最小方差、最小残差平方和等),目的是最大程度地降低目标变量的预测误差。
  2. 节点分裂:
    根据选定的特征和分割点,将数据集分割成两个或更多的子集,每个子集将形成新的子树。
  3. 递归构建子树:
    对每个子集重复以上特征选择和分割过程,直到达到预定的停止条件,例如子集内样本数量太少、剩余特征无法提供有意义的分割、达到最大树深度或节点内的预测误差低于阈值等。
  4. 叶节点输出:
    在每个叶节点上,回归树计算该节点内所有训练样本目标变量的平均值(或其它统计量,如中位数、众数等),并将这个统计量作为对未知数据的预测值。

相比于传统的线性回归模型,回归树的优势在于它可以处理非线性关系,无需预先设定模型形式,而且可以处理多变量间的交互效应。此外,决策树还可以提供直观的可视化表示,方便理解特征对预测值的影响。在集成学习框架中,回归树还常作为弱学习器组成随机森林、梯度提升等更强大的预测模型。
举例
决策树处理回归问题时,它不再用于预测离散的类别标签,而是用于预测连续型的数值输出。与分类决策树类似,回归树也是通过对数据集进行分割,形成一个树状结构,但每个叶节点输出的是一个连续数值,而非类别。

下面以一个简单的房价预测问题为例来说明:

假设我们有一个数据集,包含房屋的各种特征,如房间数量、浴室数量、房屋面积、地理位置等,目标是要预测房屋的售价(这是一个连续的数值)。

  1. 特征选择与分割:
    决策树算法会首先寻找一个特征及其分割点,使得分割后的子集房价预测误差(如均方误差)最小。比如,第一次可能选择“房屋面积”这个特征,假设当面积大于100平方米时,继续往下分割;当面积小于等于100平方米时,走到一个叶节点。
  2. 子树构建:
    在大于100平方米的子集中,再找下一个最优特征和分割点,继续分割数据,直到达到预设的停止条件。
  3. 叶节点预测值:
    当数据不能再分割或达到停止条件时,每个叶节点内的所有样本的房价会被计算出一个平均值或中位数,把这个统计量作为该叶节点对应的预测值。
  4. 预测过程:
    当新的房子数据进来时,按照决策树的规则一步步走,最终落入一个叶节点,此时该叶节点的预测值就被作为这栋房子的预测售价。

所以,通过这样一个树形结构,回归树能够处理非线性关系,同时具备一定的解释性,可以清晰地展示哪些特征对房价的影响更大,以及特征如何影响预测结果。在实际应用中,回归树可以独立使用,也可以作为集成学习的一部分,例如在随机森林回归或梯度提升决策树回归中发挥作用。

非线性理解
非线性问题是相对于线性问题而言的,在数学和机器学习领域中,线性问题是指那些可以通过线性函数(即y=ax+b这类形式的函数)进行良好描述和解决的问题。而在现实世界中,许多数据和现象的关系并不是简单的线性关系,而是呈现出复杂的非线性关系。

在回归分析中,非线性问题表现为因变量(目标变量)与自变量(特征变量)之间的关系不是一次函数的形式,而是可能存在二次、三次,甚至更高次幂的函数关系,或者是指数、对数、三角函数等形式,也可能存在多个特征变量之间的交互作用,这些都是非线性关系的表现。

例如,假设房价与房屋面积的关系,如果仅仅是简单的线性关系,即房价随着面积线性增长,可以用一个一次函数表示。但在实际情况中,随着面积的增大,房价的增长速度可能会逐渐放缓(边际效益递减),这就形成了一个非线性关系,可能需要用二次、三次函数或其他非线性模型来描述。

决策树在处理非线性回归问题时的优势在于,它可以通过特征分割和组合的方式自动捕捉特征与目标变量之间的非线性关系,无需人为设定函数形式。在树的每个节点上,决策树算法都会寻找最佳的特征分割点,这一过程实质上是在不断探索特征与目标变量间可能存在的复杂关系,从而较好地处理非线性回归问题。
选择拆分信息增益
信息增益(Information Gain)在机器学习和信息论中是一个用来衡量特征对数据集分类能力的重要指标。信息增益的计算基于熵(Entropy)的概念,熵是用来量化信息的不确定性或随机变量的混乱程度。

在决策树算法(如ID3、C4.5等)中,信息增益被用来决定最优特征的选择。具体计算时,信息增益通过比较数据集原本的熵与在给定特征分割后的各子集熵之和的差值来得到。可以表示为:

[ \text{信息增益}(D, A) = \text{熵}(D) - \text{条件熵}(D, A) ]

其中:

● ( D ) 是指原始数据集。
● ( A ) 是待考察的特征。
● ( \text{熵}(D) ) 是数据集 ( D ) 的熵,代表了在未划分特征之前,整个数据集的不确定性。
● ( \text{条件熵}(D, A) ) 是在知道特征 ( A ) 的条件下,数据集 ( D ) 的不确定性,即按照特征 ( A ) 划分后的子集的熵的加权平均。

因此,信息增益可以理解为通过特征 ( A ) 进行划分后,数据集的不确定性减少了多少,即“熵减了多少”。信息增益越高,说明特征 ( A ) 对于减少数据集的不确定性或者说提高分类纯度的作用越大。在决策树构建过程中,会选择信息增益最大的特征来进行分割,以此来构造最具辨别力的决策树。

鲁棒性

鲁棒性(Robustness)是指一个系统、算法、模型或程序在面临异常情况、不理想条件、噪声数据、边界条件、甚至是恶意攻击时,仍能保持正常运行并维持预期性能水平的能力。在工程、科学和计算机科学等多个领域中,鲁棒性都是一个至关重要的特性。

具体来说:

● 在控制系统理论中,鲁棒性指的是系统在参数变化、外部扰动或不确定性存在时,系统能够保持稳定和可控的性质。
● 在计算机编程中,一个程序或算法的鲁棒性指的是其对输入数据变化、硬件故障、网络波动等方面的抗干扰能力。例如,一个鲁棒性强的软件在接收到无效输入时,能够妥善处理,而不是崩溃或产生不可控的行为。
● 在机器学习和人工智能领域,模型的鲁棒性指的是模型在遇到未见过的数据分布、对抗性攻击或训练数据之外的变化时,还能保持准确预测和稳健性能。

简言之,鲁棒性体现了系统对外部变化和内在不确定性的抵御能力,以及在不利条件下维持功能完整性的特点。
One-Hot Encoding
(一位有效编码、独热编码)是一种将分类数据转换为数值型数据的常用方法,在机器学习和数据处理中非常重要。它主要用于将离散的类别特征转换为易于输入到机器学习算法中的数值形式。

在原始数据中,一个特征可能有多种可能的类别,例如颜色特征可以有红、黄、蓝三种颜色。使用One-Hot编码后,每一种颜色会被转化为一个二进制向量,向量的长度等于类别总数,向量中只有一个位置的值为1,其余位置均为0。例如:

● 原始数据:红色
● One-Hot编码:[1, 0, 0]
● 原始数据:黄色
● One-Hot编码:[0, 1, 0]
● 原始数据:蓝色
● One-Hot编码:[0, 0, 1]

这样一来,每一个类别都被唯一映射到了一个高维度的向量空间中,且各个向量之间相互正交,有助于机器学习模型理解和处理这些分类特征。通过这种方式,模型可以更好地捕获类别特征之间的关系,同时避免了类别间隐含的顺序关系(例如字母排序等),这对于某些算法(如逻辑回归、神经网络、支持向量机等)来说是非常重要的预处理步骤。
树集成
树集成(Ensemble of Trees)在机器学习中是一种统计学习方法,通过将多个独立的决策树模型整合起来,共同作出预测,以提高模型的准确性和鲁棒性。这种方法的基本思想是“三个臭皮匠赛过诸葛亮”,即多个较弱的学习器经过合理的结合可以形成一个更强的学习器。

在树集成方法中,每棵树通常是通过独立随机抽样(Bootstrap Sampling)训练数据集生成的,每棵树都在一定程度上有所不同。常见的树集成方法包括:

  1. 随机森林(Random Forests):
    随机森林由多个决策树构成,每棵树在训练时都使用了不同的随机子集(bootstrap sample)作为训练数据,并且在每个节点分裂时,仅从随机选取的一部分特征中选择最优特征进行分裂。最终,每棵树都会对新样本做出预测,然后通过投票(classification)或取平均(regression)的方式决定最终结果。
  2. 梯度提升决策树(Gradient Boosting Decision Trees, GBDT):
    GBDT是一种逐步累加多个弱学习器(这里为决策树)的方式来逼近真实函数的方法。每棵树都是为了修正前一棵树的预测错误而建立的,并且在每次迭代中,树的构建都会关注那些在前一步骤中预测错误较大的样本。最终,所有树的预测结果加权求和以得到最终预测。

树集成方法的优点包括:

● 降低过拟合风险:通过集成多个模型,可以分散单一模型过拟合的风险。
● 提高模型稳定性和泛化能力:集成模型比单个模型更不容易受到噪声数据的影响。
● 易于处理大量特征:随机森林等方法在构建单颗决策树时会随机选取特征,因此可以有效处理高维数据。
● 提供特征重要性评估:树集成模型可以很容易地计算出特征的重要性,这对于特征选择和模型解释非常有用。

通过树集成,机器学习模型可以更好地抓住数据集中的复杂非线性关系和模式,从而实现更好的预测效果。

替换抽样

替换抽样(Bootstrapping)是一种统计学中的非参数估计方法,由Bradley Efron在1979年提出,用于估计统计量的分布,进而计算置信区间、检验统计假设等。替换抽样基于自助法(Bootstrap Method)原理,核心思想是通过反复从原始样本中进行有放回抽样来模拟数据生成过程,从而获得抽样分布的估计。

具体操作步骤如下:

  1. 有放回抽样:
    ○ 从原始样本中随机抽取观测值,每次抽取时允许重复抽取同一个观测值(就像洗牌后再抓牌一样,有可能抓到刚刚放回去的那张牌)。
    ○ 这个过程重复多次,通常数千次或更多,以形成多个重抽样本(Bootstrap Sample)。
  2. 计算统计量:
    ○ 对每个重抽样本,计算感兴趣的统计量,如均值、中位数、方差、相关系数等。
  3. 模拟分布:
    ○ 通过所有重抽样本计算出来的统计量集合,可以得到该统计量的模拟分布,这个分布可以看作是基于原始样本数据真实分布的一个近似。
  4. 推断与估计:
    ○ 利用模拟分布可以计算统计量的百分位数,从而得到置信区间;也可以通过比较模拟分布与原假设分布来完成假设检验。

替换抽样方法的优点在于,它不需要对原始数据的分布做任何假设,因此被称为非参数方法,适用于各种分布形态的数据,同时也适用于小样本数据的推断。这种方法在实际应用中广泛运用于各种领域的数据分析和建模中。
决策树 vs 神经网络
选择神经网络还是决策树来解决问题主要取决于以下几个因素:

  1. 数据量和数据特性:
    ○ 决策树和其集成模型(例如随机森林、梯度提升树等)在小到中等规模数据集上表现良好,特别是当特征数量有限且易于解释的时候。决策树可以直观展示决策过程,有助于业务理解和规则提取。
    ○ 神经网络,尤其是深度学习网络,在大规模数据集上通常表现出色,尤其是在处理高维数据或多模态数据(如图像、音频、文本)时,神经网络的非线性建模能力和自动特征学习的优势得以充分发挥。
  2. 解释性要求:
    ○ 决策树模型具有高度可解释性,其决策路径清晰明了,便于用户理解和实施。在对模型解释性要求高的场合,如金融风控、医疗诊断等领域,决策树或其解释性强的变种更为适合。
    ○ 相比之下,神经网络的黑盒特性导致其内部工作机制较难解释,对于那些无需严格解释或者解释性需求较低的应用场景,神经网络是更好的选择。
  3. 计算资源和效率:
    ○ 决策树构造和预测过程相对较快,对于实时性要求较高的应用场景,决策树及其集成模型可以更快地得出结果。
    ○ 神经网络虽然训练过程可能耗时较长,但在现代硬件加速器(如GPU)的支持下,可以高效处理大量数据,并且一旦训练完成,预测速度也相当快速。
  4. 特征工程:
    ○ 决策树对特征预处理的要求不如神经网络苛刻,对于离散型特征和有序特征可以直接处理,而神经网络通常需要更多的特征编码技巧。
    ○ 神经网络则可以通过自动特征学习减少手动特征工程的工作量,特别是在处理高维稀疏数据或复杂非线性关系时。

总结起来,当需要简洁的可解释性、处理较小规模数据或者特征维度较低时,决策树可能是首选;而在处理大型复杂数据集、需要自动学习复杂特征交互或对预测性能要求极高时,神经网络通常是更优的选择。同时,综合考虑项目的资源限制、执行速度以及法规监管要求等因素也很重要。

监督学习 无监督 半监督

监督学习和无监督学习是机器学习的两大主要类别,它们的主要区别在于训练数据的标签性质以及学习目标的不同:

监督学习 (Supervised Learning)

监督学习是指在训练过程中,算法会接触到带有标签的示例数据。标签提供了每个数据点正确结果的指导信息。监督学习的目标是学习从输入到输出的映射关系,并据此对新的、未标记的数据进行预测。根据预测结果的类型,监督学习进一步细分为:

  1. 分类(Classification): 当输出变量是离散的类别标签时,模型的任务是对输入数据进行分类。例如,预测邮件是否为垃圾邮件(是/否)、手写数字识别(0-9)等。
  2. 回归(Regression): 当输出变量是连续值时,模型的任务是预测一个数值。例如,预测房价、气温或者某个物体的速度等。

无监督学习 (Unsupervised Learning)

无监督学习则是指在训练数据中没有标签,算法需要自己发现数据内部的结构、模式或者集群。其主要目的是从原始数据中提取有用的信息,揭示隐藏的模式或数据分群。无监督学习的主要分类包括:

  1. 聚类(Clustering): 将数据自动划分为不同的组或类别,使得同一类别内的样本尽可能相似,不同类别间的样本尽可能不同。例如,客户细分、文档主题聚类等。
  2. 降维(Dimensionality Reduction): 如主成分分析(PCA)、独立成分分析(ICA)、t-SNE等方法,用于减少数据的复杂性,同时保留关键的结构信息,用于可视化或压缩数据。
  3. 关联规则(Learning Association Rules): 寻找数据项之间有趣的关联或频繁模式,如市场购物篮分析(Apriori算法)中找出顾客购买商品之间的关联规律。
  4. 非概率密度估计(Neural Density Estimation): 用于估计数据的概率分布,例如深度学习中的变分自编码器(VAE)和自回归模型(AutoRegressive Models)等。

半监督学习 (Semi-Supervised Learning)

半监督学习介于监督学习和无监督学习之间,使用的数据集中一部分样本带有标签,另一部分则没有标签。半监督学习旨在利用少量有标签数据和大量无标签数据来训练模型,以改进模型性能或解决数据标注成本高昂的问题。半监督学习并不是一个独立的分类方法,而是结合了监督学习和无监督学习特点的一种学习策略。

2.24

误差分析

误差分析在机器学习中是一个重要的步骤,用于深入理解模型性能并识别潜在改进点。它涉及以下几个关键方面:

  1. 误差类型:
    ○ 训练误差与测试误差:在机器学习中,模型在训练数据上的表现(训练误差)和新数据上的表现(测试误差)通常是分开考虑的。训练误差可以帮助我们了解模型对已知数据的拟合程度,而测试误差则反映了模型的泛化能力。
    ○ 偏差(Bias)与方差(Variance):这是对模型预测误差的两种主要分解。偏差是指模型预测值与真实值之间的期望误差,反映了模型本身的简化或者过于简单导致的偏离实际问题的程度。方差则是模型在不同训练集上的预测结果的变化性,高方差表明模型对训练数据过敏感,即过拟合现象。
  2. 损失函数:
    ○ 损失函数是衡量模型在单个样本上预测误差的量化指标,如均方误差、交叉熵等。通过最小化整个训练集上的平均损失来优化模型参数。
  3. 误差源识别:
    ○ 误差分析的关键步骤包括识别模型预测错误的具体原因。这可以通过分析模型在测试集上的错误案例,探究诸如特征缺失、噪声干扰、类别不平衡等因素如何影响模型性能。
  4. 数据划分:
    ○ 数据集被划分为训练集、验证集和测试集,以便分别用于模型训练、超参数调整和最终模型性能评估。通过观察模型在这三类数据上的表现差异,可以更好地理解模型误差的分布情况。
  5. 评估指标:
    ○ 对于分类任务,常用的精度(Precision)、召回率(Recall)、F1分数等指标可以帮助我们从不同角度理解模型的优劣,特别是当误分类的成本各异时。
  6. 实例分析:
    ○ 通过对具体错误样例进行详细分析,例如查看哪些特征可能导致了误判,或者模型在哪类数据子集上表现不佳,可以指导我们针对性地改进模型,如增加更多代表性样本、修改特征提取方式或采用更复杂/更简单的模型结构。

总的来说,误差分析是一个系统的诊断过程,旨在通过各种手段深入挖掘模型预测不准确的原因,并据此制定有效的改进策略,从而提升模型的整体性能和泛化能力。

泛化能力

泛化能力(Generalization Ability)在机器学习中是一个非常关键的概念,它描述的是模型在面对未见过的新数据(新增数据集)时,能否基于从已有训练数据中学到的规律进行准确预测的能力。具体来说:

  1. 训练集与测试集:
    在训练机器学习模型时,我们通常将数据集分为训练集和测试集。模型在训练集上进行学习,通过优化算法调整参数,使得模型在训练数据上的表现尽可能好。
  2. 泛化能力的理想状态:
    泛化能力强的模型,不仅在训练集上表现出色,更重要的是在从未参与训练的测试集上,以及未来可能遇到的真实世界数据上,也能保持良好的预测效果。这意味着模型能够识别数据背后的普适性规律,而非仅仅记住训练集的特例。
  3. 避免过拟合与欠拟合:
    ○ 过拟合(Overfitting)是指模型在训练集上表现极佳,但在测试集或新数据上的表现较差,这是因为模型过度学习了训练集中的噪声和细节,而忽视了数据的一般规律。
    ○ 欠拟合(Underfitting)则是模型对训练集的学习不足,未能捕捉数据的主要趋势,因此无论在训练集还是测试集上,模型的预测效果都不理想。
  4. 提升泛化能力的方法:
    通过正则化、特征选择、模型复杂度控制、集成学习、数据增强等多种策略,可以有效地改善模型的泛化能力。其中,正则化是一种常见的降低模型复杂度、抑制过拟合的技术,通过在损失函数中加入惩罚项来约束模型参数,使得模型对训练数据的拟合不过于严格。

总之,泛化能力是衡量机器学习模型真正价值的重要标准,它关乎模型能否将从有限训练数据中学到的知识迁移到无限可能的新数据上,从而达到有效预测和决策的目的。
数据增强

迁移学习

迁移学习在机器学习中是一种强大的技术,它允许我们在一个任务(源任务)上预训练好的模型基础上,针对新任务(目标任务)进行微调或调整,以复用预先学到的特征表示和模式。迁移学习的核心理念是利用源任务学习到的知识来加速和改进目标任务的学习过程,尤其是在目标任务的训练数据有限的情况下。

在实践中,迁移学习常常涉及到对神经网络架构的不同层进行不同的操作。通常,预训练模型(如ResNet、VGG、BERT等)会被划分为两部分:基础网络(也称作特征抽取器)和输出层(或全连接层,负责最后的分类或回归)。这两部分在迁移学习中会有不同的处理方式:

  1. 基础网络:
    ○ 冻结(Freezing): 在迁移学习初期阶段,通常会保持基础网络的所有权重不变,只训练目标任务特有的输出层。这样做的目的是保留源任务学习到的强大特征表示能力,避免在有限的目标数据上过拟合。
    ○ 微调(Fine-tuning): 在冻结的基础上,随着目标数据集的增长或训练迭代次数的增加,可以选择性地解冻部分基础网络层,并允许其在目标任务上进行进一步的学习和调整。微调通常从靠近输出层的部分开始,逐步向前扩展,直至整个基础网络都被纳入训练。
  2. 输出层:
    ○ 替换(Replacement): 根据目标任务的需求,完全替换掉预训练模型原有的输出层。因为原始模型的输出层是为了适应源任务的类别数和输出格式设计的,所以新任务通常需要一个新的输出层,其节点数量对应目标任务的类别数目。
    ○ 调整(Adaptation): 对于多任务学习或相似的任务,可能只需在原有输出层结构基础上进行调整,比如增加或减少输出节点,或者调整输出层的激活函数等。
    ○ 训练(Training): 新建一个适合目标任务的输出层,并与预训练的基础网络一起进行联合训练,使模型能够学习到针对目标任务的分类或回归能力。

在迁移学习中,对输出层的操作非常关键,因为它直接影响模型对目标任务的适应能力和泛化性能。通过合理设计和调整输出层,我们可以高效利用预训练模型的特征表达能力,并结合目标数据的特点训练出针对特定任务的有效模型。
项目完整周期

2.23

偏差 方差

在机器学习中,偏差(Bias)和方差(Variance)是衡量模型预测能力的两个重要指标,它们共同构成了模型泛化能力的理论框架,即偏差-方差权衡(Bias-Variance Tradeoff)。

  1. 偏差(Bias):
    ○ 偏差描述的是模型的简化或近似程度,反映了模型预测结果的平均误差。具有高偏差的模型通常过于简单,无法充分捕捉数据集的复杂模式,表现为欠拟合(Underfitting)。例如,一个过于简单的线性模型可能无法拟合数据中的非线性趋势,导致模型总是偏向于某个固定的预测值,与真实值间的差距较大。
    ○ Bias2=(期望预测值−真实值)2

  2. 方差(Variance):
    ○ 方差则反映了模型对训练数据的变化敏感程度。具有高方差的模型倾向于过度拟合(Overfitting),即对训练数据的细节过分敏感,导致模型在训练集上表现很好,但在未见过的新数据上表现不佳。换句话说,高方差模型在不同的训练集上表现波动较大,对训练数据的微小变化反应过度。
    ○ Variance=E[(预测值−期望预测值)2]
    ○ 预测值 (y\hat{y}y):对于给定输入 xxx 的情况下,模型预测出的输出值。在监督学习中,当我们用模型拟合数据时,对于每一个实例,模型都会给出一个预测结果。
    ● 期望预测值 (E[y\hat{y}y]):所有可能的预测值的平均值,也就是当模型应用于整个总体(population)时,预测结果的期望值。在实际应用中,我们通常无法直接计算总体的期望预测值,而是通过计算训练集上预测值的均值来近似估计。

  3. 偏差-方差权衡:
    ○ 在选择或调整模型时,我们需要在模型的复杂度和预测稳定性之间取得平衡。低偏差模型可能由于忽略了数据中的关键模式而导致预测不准,而低方差模型可能因为过于灵活而对训练数据中的噪声和无关细节有过分响应。理想情况下,我们寻求一个具有适度复杂度的模型,它既能较好地捕获数据的主要趋势,又能对新数据保持良好的泛化能力。

总结来说,偏差度量的是模型固有的简化或假设造成的误差,而方差度量的是模型对训练数据变动的敏感性。在机器学习实践中,通过调整模型参数、增加正则化、选择合适的模型架构等方式,可以优化偏差和方差,从而提高模型的泛化能力。

高偏差 高方差

在一个特定的位置或者针对某个固定的训练集与验证集划分情况下,一个模型不能同时表现为高偏差(High Bias)和高方差(High Variance)。高偏差和高方差描述的是模型拟合数据好坏以及泛化能力的两个不同方面:

● 高偏差(欠拟合,Underfitting):模型过于简单,不足以捕捉数据中的复杂模式,导致模型在训练集上的误差较大,并且由于模型不够复杂,对训练集变化不够敏感,因此在验证集上的误差也会相对较大。此时,模型不仅在训练数据上表现不好,在新数据上的表现也同样会差。
● 高方差(过拟合,Overfitting):模型过于复杂,以至于它过分拟合了训练数据中的噪声和细节,这会导致模型在训练集上表现出色,但在验证集或其他未见过的数据上的误差很大。过拟合的模型缺乏泛化能力,对训练数据的小变动过于敏感。

然而,在不同的数据子集或者不同的模型复杂度设置下,同一个模型体系可能会出现高偏差问题和高方差问题,尤其是在模型选择过程中,随着模型复杂度的增加,模型的表现可能先经历欠拟合阶段,然后过渡到过拟合阶段。在调整模型参数的过程中,模型在某一区域可能表现出高偏差,在另一区域则表现出高方差。例如,在训练多项式回归模型时,如果选择的多项式阶数过低,模型可能欠拟合(高偏差),而阶数过高时,则可能过拟合(高方差)。所以,在讨论模型性能时,需要结合具体的情境和模型的具体配置来理解偏差与方差的关系。

期望算子E

期望算子(Expectation Operator)是概率论和统计学中的核心概念之一,它用于衡量随机变量的平均值或者典型值。在数学符号中,通常用 (E[X]) 表示随机变量 (X) 的期望值。

具体来说,对于一个随机变量 (X),它的期望值 (E[X]) 定义如下:

  1. 对于离散型随机变量:
    如果随机变量 (X) 可能取若干个离散值 (x_1, x_2, …, x_n),并且每个值发生的概率分别为 (P(X=x_1), P(X=x_2), …, P(X=x_n)),那么 (X) 的期望值 (E[X]) 为所有可能取值与其对应概率乘积的和:
    [ E[X] = \sum_{i=1}^{n} x_i \cdot P(X=x_i) ]
  2. 对于连续型随机变量:
    如果随机变量 (X) 在区间上有连续的概率分布 (f(x)),那么 (X) 的期望值 (E[X]) 是 (X) 在其整个定义域上取值与该点概率密度函数值乘积的积分:
    [ E[X] = \int_{-\infty}^{\infty} x \cdot f(x) dx ]

在机器学习的上下文中,当我们讨论模型预测值的期望时,假设我们的模型 (f(x;\theta)) 是一个依赖于参数 (\theta) 的函数,对于给定的输入 (x),模型会输出一个预测值 (\hat{y})。此时,模型预测值的期望 (E[\hat{y}]) 表示的是所有可能预测结果的平均情况。

例如,在之前提到的方差计算公式中,(E[\hat{y}]) 表示模型所有可能预测结果的平均值,它可以看作是模型在理想情况下的“基准”预测水平,而方差则衡量了模型实际预测值围绕这个基准的波动程度。

正则化

正则化(Regularization)是机器学习中的一种重要技术,主要用于防止模型过拟合(Overfitting),提高模型的泛化能力。过拟合是指模型在训练数据上表现得非常好,但对未见过的新数据(测试集或实际应用中遇到的数据)表现不佳的现象。正则化通过在损失函数(Loss Function)中添加一个惩罚项(Penalty Term),来限制模型的复杂度,促使模型选择更简洁、更通用的参数解。

常见的正则化方法包括:

  1. L1 正则化(Lasso Regression):
    在损失函数中添加 L1 范数(即参数绝对值之和)作为惩罚项,它倾向于产生稀疏的模型,即某些参数被压缩为零,实现特征选择的效果。
    [ Loss = OriginalLoss + \alpha \sum_{i=1}^{n} |w_i| ]
    其中 ( w_i ) 是模型的参数,( \alpha ) 是正则化强度的超参数。
  2. L2 正则化(Ridge Regression 或 Tikhonov Regularization):
    在损失函数中添加 L2 范数(即参数平方和的开方)作为惩罚项,它会使模型参数变小但不趋向于零,从而降低了模型的复杂度。
    [ Loss = OriginalLoss + \alpha \sum_{i=1}^{n} w_i^2 ]
  3. Elastic Net:
    Elastic Net 是 L1 和 L2 正则化的结合体,既鼓励稀疏性,又减少模型参数的尺度。其惩罚项是 L1 和 L2 的混合形式。
    [ Loss = OriginalLoss + \alpha \rho \sum{i=1}^{n} |w_i| + \frac{\alpha (1-\rho)}{2} \sum{i=1}^{n} w_i^2 ]
    其中,( \rho ) 是控制 L1 和 L2 正则化比例的参数。

除了以上线性回归中的正则化方法外,深度学习中也有类似的正则化技术,例如:

● 权重衰减(Weight Decay):实际上就是 L2 正则化的一种表述形式,通过在损失函数中添加权重矩阵各项元素平方和的惩罚项来限制权重的大小。
● Dropout:
在训练神经网络时随机丢弃一部分神经元的输出,相当于对神经元权重进行了变相的正则化,能有效防止过拟合。
● 数据增强(Data Augmentation):
虽然不属于严格的正则化技术,但通过随机变换原始训练数据生成更多样化的训练样本,可以增大训练集的有效大小,从而起到类似正则化的效果,提高模型的泛化能力。

此外,还有早停(Early Stopping)等策略,虽然不直接修改损失函数,但通过在验证集上监控性能并在适当时间停止训练,也可以视为防止过拟合的一种正则化方法。

2.21

训练集 验证集 测试集

在机器学习和统计建模中,数据集通常被分为三部分:训练集(Training Set)、验证集(Validation Set)和测试集(Test Set),这三部分在模型开发和评估过程中起着不同的作用。

  1. 训练集(Training Set):
    ○ 训练集用于训练模型。换句话说,它是用来“教”模型的数据。
    ○ 在这个数据集上,模型通过最小化预测错误来学习数据的内在规律和模式。
    ○ 训练集帮助确定模型的参数,例如神经网络中的权重和偏差。
  2. 验证集(Validation Set):
    ○ 验证集用于在模型训练过程中进行模型选择和调整超参数。
    ○ 它可以用来评估模型在未见过的数据上的性能,从而防止过拟合(overfitting)。
    ○ 通过在验证集上评估性能,可以选择最佳的模型配置,如网络结构、正则化参数等。
    ○ 验证集还可以用来进行早期停止(early stopping),即当模型在验证集上的性能不再提高时,停止训练以防止过拟合。
  3. 测试集(Test Set):
    ○ 测试集用于评估模型的最终性能,即模型对完全未见过的数据的泛化能力。
    ○ 在模型选择和超参数调整完成后,使用测试集来评估模型的性能,确保这些评估是在独立的、未见过的数据上进行的。
    ○ 测试集通常在整个训练过程中都是未知的,只在最后用来评估模型的实际预测能力。
    ○ 测试集的性能评估结果应该接近模型在真实世界数据上的性能。
    交叉验证(Cross-Validation):
    交叉验证是一种评估模型性能的技术,它结合了训练和验证的步骤。基本思想是将原始数据集分为k个子集(通常称为“折”或“分区”),然后重复k次训练和验证过程。在每次迭代中,一个子集被用作测试集,其余子集被用作训练集。这样可以充分利用数据集进行模型评估,同时避免了对测试集的过拟合。常见的交叉验证方法有k-折交叉验证(k-fold cross-validation)和留出交叉验证(holdout cross-validation)等。
    总之,训练集、验证集和测试集在模型开发和评估过程中各自扮演着不同的角色,而交叉验证则提供了一种有效的方式来评估模型的泛化能力和性能稳定性。

2.18

损失函数、成本函数、激活函数

激活函数(Activation Function)在神经网络中扮演着不同于损失函数和成本函数的角色:

  1. 激活函数:
    ○ 激活函数是应用于神经网络隐藏层节点和输出层节点的非线性函数,它的作用在于引入非线性特性到模型中,使得模型能够学习和捕捉数据中的复杂关系和模式。
    ○ 常见的激活函数包括Sigmoid、ReLU、Tanh、Leaky ReLU、ELU、Softmax等。
    ○ 激活函数在前向传播过程中,对每个神经元的线性组合(加权和)结果进行变换,生成神经元的输出信号。
  2. 损失函数(Cost/Loss Function):
    ○ 损失函数衡量模型在训练样本上的预测输出与真实标签之间的差异程度,是模型训练过程中需要最小化的函数。
    ○ 损失函数用于指导模型参数更新的方向和步幅,通过反向传播算法计算损失函数对模型参数的梯度,优化器据此调整模型参数以降低损失。
  3. 成本函数(Cost Function):
    ○ 在某些上下文中,成本函数与损失函数是同义词,特别是在批量训练神经网络时,损失函数会扩展为整个训练集上的平均损失,即成本函数。
    ○ 在神经网络训练中,模型优化的目标是找到一组参数,使得成本函数(即所有训练样本的平均损失)最小。

总结起来,激活函数是神经网络模型结构中不可或缺的组成部分,它影响着模型的非线性表达能力;而损失函数(成本函数)是优化过程的核心,用于衡量模型性能并指导模型参数的更新。激活函数是模型内部各层节点的工作机制,而损失函数是评估模型整体性能好坏并驱动模型学习的关键指标。

在神经网络中,model.compile 和 model.fit 是Keras API中训练模型的重要步骤,它们分别负责模型的配置和训练过程。关于损失函数和成本函数:

  1. model.compile:
    这个方法用于配置模型如何进行训练和评估。在.compile方法中,我们指定损失函数(Loss Function)、优化器(Optimizer)以及(可选的)评估指标(Metrics)。
    model.compile(loss=…, optimizer=…, metrics=…)

在这里,loss 参数是我们指定的损失函数,它决定了模型在训练过程中试图最小化的那个函数。损失函数通常是对单个训练样本的预测结果与真实标签之间的差异进行度量的标准方法。例如,在二分类问题中,我们可能会使用BinaryCrossentropy损失函数,在多分类问题中,可能会使用CategoricalCrossentropy损失函数,在回归问题中,可能会使用MeanSquaredError损失函数等。
2. model.fit:
这个方法用于训练模型,即使用给定的数据集和在.compile阶段指定的参数来更新模型的权重。
model.fit(x_train, y_train, epochs=…, batch_size=…, validation_data=…, …)

在model.fit期间,框架会通过前向传播(Forward Propagation)计算模型对训练数据的预测值,然后通过损失函数计算每个批次(Batch)或每个样本的损失。接着,反向传播(Backpropagation)会根据优化器计算的梯度更新模型权重,以降低损失。
虽然在model.fit过程中并未直接指定成本函数(Cost Function),但实际上,model.fit过程中优化的目标正是在所有训练样本上累积的损失函数之和,也就是所谓的“成本”或“代价”。因此,model.fit间接地最小化了整个训练集上的成本函数。

总结来说,在神经网络中,损失函数在每个训练步骤中单独计算,然后累计成本(即所有训练样本上的平均损失),并在model.fit方法中通过优化器进行权重更新,以期最小化这个成本函数。
反向传播算法、优化器
反向传播算法(Backpropagation Algorithm)和优化器(Optimizer)在神经网络训练过程中起着不同的关键作用:

反向传播算法(Backpropagation)

反向传播算法是一种有效计算神经网络中参数梯度的方法,用于训练多层前馈神经网络。其基本流程如下:

  1. 前向传播:给定一组输入数据,网络首先进行前向传播,计算每一层神经元的输出(通过激活函数处理),直到得到最终的网络输出。
  2. 计算损失:比较网络的实际输出与目标输出(也称为标签或真值),使用一个损失函数(比如均方误差、交叉熵等)来量化这种差距,得到单个样本或批量样本上的损失。
  3. 反向传播:从输出层开始,逐层反向计算每个神经元对应权重的梯度。梯度代表了在当前参数值下,损失函数相对于该参数的小幅度变化率。具体来说,利用链式法则,我们可以有效地计算出网络中每层权重和偏置项对于总损失的偏导数。
  4. 参数更新准备:收集完所有参数的梯度后,就可以知道怎样更改权重和偏置才能减小损失。这是优化过程的基础。

优化器(Optimizer)

优化器利用反向传播得到的梯度信息来更新神经网络的参数。其目的是在训练过程中搜索损失函数的最小值,从而达到最优的模型参数设置。常见的优化器有:

● 梯度下降(Gradient Descent):最基础的优化器,直接按照梯度的反方向调整权重,通常采用固定的学习率来控制每次迭代的更新幅度。
● 动量(Momentum):引入了“动量”概念,考虑了过去的梯度,在更新时不仅考虑当前梯度还考虑历史梯度的累积,有助于更快地逃离局部极小点。
● Adagrad、RMSprop和Adadelta:这些优化器都基于自适应学习率调整策略,针对不同参数有不同的学习率,可以更高效地收敛。
● Adam (Adaptive Moment Estimation):结合了动量和自适应学习率调整的优点,是目前非常流行的优化器之一。

在实际操作中,优化器根据反向传播得到的梯度信息,遵循预设的更新规则来调整网络参数,这样经过多次迭代之后,模型能够逐渐改善其对训练数据的拟合程度,并且(理想情况下)能够在未知数据上泛化良好。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值