当前位置: 首页 > article >正文

HNU人工智能期末复习知识点整理

考纲

  • 选择题 ( 30 分 ) (30分) (30) 15 15 15个单选
    • 选择题范围为 PPT 内容+课本内容
  • 计算、简答、推理题 ( 70 分 ) (70分) (70) 4 4 4个大题,每个大题 2 ∼ 3 2 \sim 3 23小问
    • 4 4 4个大题分别为:机器学习、深度学习、深度学习、强化学习
    • 大题都是 PPT 内容

一、概述

  • 人工智能的定义

    • 像人一样思考
    • 像人一样行动
    • 理性地思考
    • 理性地行动
  • 图灵测试

    • 一个人在不接触对方的情况下,通过一种特殊的方式和对方进行一系列的问答。如果在相当长时间内,他无法根据这些问题判断对方是人还是计算机,那么就可以认为这个计算机是智能的
  • 人工智能的发展历程

    • 计算推理➡知识表示➡机器学习➡深度学习
  • 人工智能的分类

    • 弱人工智能
    • 强人工智能
    • 超人工智能

二、逻辑推理

2.1 命题逻辑

2.2 谓词逻辑

2.3 知识图谱推理

  • 知识图谱有向图构成,被用来描述现实世界中实体及实体之间的关系

  • 两个节点和连接边可表示为形如 <left_node, relation, right_node> 的三元组形式,也可表示为一阶逻辑(first order logic,FOL)的形式

  • 归纳逻辑程序设计(inductive logic programming,ILP)

    • ILP 使用一阶谓词逻辑进行知识表示,通过修改和扩充逻辑表达式对现有知识进行归纳,完成推理内容

    • FOIL(first order inductive learner)算法是 ILP 的代表性方法,通过序贯覆盖学习推理规则
      F O I L _ G a i n = m ^ + ⋅ ( log ⁡ 2 ( m ^ + m ^ + + m − ) − log ⁡ 2 ( m + m + + m − ) ) FOIL\_Gain = \hat{m}_+ \cdot \left( \log_2 \left( \frac{\hat{m}_+}{\hat{m}_+ + m_-} \right) - \log_2 \left( \frac{m_+}{m_+ + m_-} \right) \right) FOIL_Gain=m^+(log2(m^++mm^+)log2(m++mm+))

  • 路径排序算法(path ranking algorithm,PRA)

    • 将实体之间的关联路径作为特征,来学习目标关系的分类器
    • 属于监督学习
    • 流程
      • 特征抽取:生成并选择路径特征集合。生成路径方法:随机游走(random walk)、BFS、DFS
      • 特征计算:计算每个训练样例的特征值 P ( s → t ; π j ) P(s \to t; \pi_j) P(st;πj),表示从实体节点 s s s出发,通过关系路径 π j \pi_j πj达到实体节点 t t t的概率。或表示是否存在这样一条路径,或表示路径出现的频次频率
      • 分类器训练:根据训练样例特征值,为目标关系训练分类器。训练后可用于推理两个实体间是否存在目标关系

2.4 概率推理

  • 贝叶斯网络

    • 有向无环图表示

    • 贝叶斯网络中所有因素的联合分布等于所有节点的 P ( 节点 ∣ 父节点 ) P(节点|父节点) P(节点父节点)的乘积

    P ( 多云, 下雨, 洒水车, 路湿 ) = P ( 多云 ) ⋅ P ( 洒水车|多云 ) ⋅ P ( 下雨|多云 ) ⋅ P ( 路湿|洒水车,下雨 ) P(\text{多云, 下雨, 洒水车, 路湿}) = P(\text{多云}) \cdot P(\text{洒水车|多云}) \cdot P(\text{下雨|多云}) \cdot P(\text{路湿|洒水车,下雨}) P(多云下雨洒水车路湿)=P(多云)P(洒水车|多云)P(下雨|多云)P(路湿|洒水车,下雨)

  • 马尔可夫网络

    • 无向图表示

2.5 因果推理

  • 辛普森悖论

    • 在总体样本上成立的某种关系在分组样本上却不一定成立甚至相反
  • 复杂数据中变量之间的关联关系

    • 因果关联:数据中两个变量,如果一个变量是另一个变量的原因,则该两变量之间存在因果关联
    • 混淆关联:数据中待研究的两个变量之间存在共同的原因变量(在辛普森悖论中,性别就是原因变量)
    • 选择关联:数据中待研究的两个变量之间存在共同的结果变量
  • 因果推理使用的模型

    • 潜在结果框架
    • 结构因果模型:使用因果图(有向无环图)

三、搜索求解

3.1 基本概念

  • 搜索算法的评价指标

    • 完备性:是否一定能找到一个解
    • 最优性:找到的解是否是最优解
    • 时间复杂度和空间复杂度如何
    • 是否会陷入死循环
  • 搜索算法分类

    • 有信息搜索启发式搜索):贪婪最佳优先搜索, A ∗ A* A搜索(适用于单智能体的问题求解)

    • 无信息搜索:深度优先搜索,广度优先搜索

    • 对抗搜索 M i n i m a x Minimax Minimax搜索, a l p h a − b e t a alpha-beta alphabeta剪枝搜索(适用于多智能体的竞争环境)

    • 蒙特卡洛树搜索:上限置信区间策略,蒙特卡洛树搜索(适用于无法完全遍历的大规模决策空间,找到近似最优解)

3.2 启发搜索

  • 贪婪最佳优先搜索

    • 评价函数 f ( n ) = 启发函数 h ( n ) 评价函数f(n)=启发函数h(n) 评价函数f(n)=启发函数h(n)(完备但不是最优的)
  • A ∗ A* A搜索

    • 评价函数 f ( n ) = 起始节点到节点 n 代价 g ( n ) + 启发函数 h ( n ) 评价函数f(n)=起始节点到节点n代价g(n)+启发函数h(n) 评价函数f(n)=起始节点到节点n代价g(n)+启发函数h(n)(完备且最优)
    • 良好的启发函数需要满足的性质为可容性一致性
      • 可容性:启发函数不会过高估计从结点 n n n终止结点所应该付出的代价(即估计代价小于等于实际代价)
      • 一致性:对于任意节点 n n n,有 h n ≤ c n , a , n ′ + h n ′ h_n \leq c_{n, a, n'} + h_{n'} hncn,a,n+hn,其中, c n , a , n ′ c_{n, a, n'} cn,a,n表示节点 n n n通过动作 a a a到达其相应的后继节点 n ′ n' n的代价

3.3 对抗搜索

  • 最小最大搜索(Minimax)

    • 最大最小搜索是求解对抗搜索问题的基本算法

    • 该算法假设两名玩家在决策时总是理性地倾向于最大化自己的得分(最小化对方得分)

    • 执行了一个完整的深度优先搜索,时间复杂度过高
      minimax ( s ) = { utility ( s ) if terminal_test ( s ) max ⁡ a ∈ actions ( s ) minimax ( result ( s , a ) ) if player ( s ) = MAX min ⁡ a ∈ actions ( s ) minimax ( result ( s , a ) ) if player ( s ) = MIN \text{minimax}(s) = \begin{cases} \text{utility}(s) & \text{if terminal\_test}(s) \\ \max_{a \in \text{actions}(s)} \text{minimax}(\text{result}(s, a)) & \text{if player}(s) = \text{MAX} \\ \min_{a \in \text{actions}(s)} \text{minimax}(\text{result}(s, a)) & \text{if player}(s) = \text{MIN} \end{cases} minimax(s)= utility(s)maxaactions(s)minimax(result(s,a))minaactions(s)minimax(result(s,a))if terminal_test(s)if player(s)=MAXif player(s)=MIN

  • a l p h a − b e t a alpha-beta alphabeta剪枝搜索

    • 如果搜索树极大,则最大最小搜索的开销巨大,无法在合理时间内返回结果

    • 算法思想
      minimax ( s 0 ) = max ⁡ ( min ⁡ ( 3 , 9 , 10 ) , min ⁡ ( 2 , x , y ) , min ⁡ ( 10 , 5 , 1 ) ) = max ⁡ ( 3 , min ⁡ ( 2 , x , y ) , 1 ) = 3 \text{minimax}(s_0) = \max(\min(3, 9, 10), \min(2, x, y), \min(10, 5, 1)) = \max(3, \min(2, x, y), 1)= 3 minimax(s0)=max(min(3,9,10),min(2,x,y),min(10,5,1))=max(3,min(2,x,y),1)=3

    • 为每个节点设置一个 α \alpha α值和一个 β \beta β值,来判断该节点及其后继节点是否可被剪枝

    • 初始时 [ α , β ] = ( − ∞ , + ∞ ) [\alpha, \beta] = (-\infty, +\infty) [α,β]=(,+)

      • 对于 MAX 节点,如果其后继节点得到收益大于当前的 α \alpha α值,则将 α \alpha α值更新为该收益
      • 对于 MIN 节点,如果其后继节点得到收益小于当前的 β \beta β值,则将 β \beta β值更新为该收益
    • 如果一个节点的 α \alpha α值和 β \beta β值满足 α > β \alpha > \beta α>β的条件,则该节点尚未被访问的后继节点就会被剪枝,因而不会被智能体访问

3.4 蒙特卡洛搜索

  • ϵ \epsilon ϵ- 贪心算法
    • 探索与利用之间进行平衡的搜索算法
      • 1 − ϵ 1- \epsilon 1ϵ的概率在过去 t − 1 t-1 t1次摇动赌博机摇臂的行动中所得平均收益分数最高的赌博机进行摇动
      • ϵ \epsilon ϵ的概率随机选择一个赌博机进行摇动
  • 上限置信区间算法(UCB1)
    • 为每个动作的奖励期望计算一个估计范围,优先采用估计范围上限较高的动作
  • 蒙特卡洛树搜索
    • 找到近似最优解
    • 四个步骤
      • 选择:算法从搜索树的根节点开始,向下递归选择子节点直到到达叶子结点或者到达还具有未被扩展的子节点的节点 L,向下递归选择的过程可由 UCB1 算法来实现,在递归选择过程中记录下每个节点被选择的次数和每个节点得到的奖励均值
      • 扩展:如果节点 L 还不是一个终止节点,则随机扩展它的一个未被扩展过的后继边缘节点 M
      • 模拟:从节点 M 出发,模拟扩展搜索树,直到找到一个终止节点
      • 反向传播:用模拟所得结果回溯更新模拟路径中 M 及以上节点的奖励均值和被访问次数

四、机器学习

4.1 基本概念

  • 机器学习种类

    • 监督学习

      • 从有标签的数据集中学习。即每个训练样本都有一个已知的结果(线性回归、逻辑回归、决策树、线性判别分析 LDA)
    • 无监督学习

      • 从没有标签的数据集中学习(k 均值聚类、特征降维)
    • 半监督学习

      • 在少量带标签和大量未带标签的数据集中学习
    • 强化学习

      • 通过试错的方式,学习哪些行为可以获得奖励,哪些行为会导致惩罚

4.2 模型评估与参数估计

  • 经验风险 R emp R_{\text{emp}} Remp):映射函数 f f f在训练集上产生的损失
    R emp = 1 n ∑ i = 1 n L o s s ( y i , f ( x i ) ) R_{\text{emp}} = \frac{1}{n} \sum_{i=1}^{n} Loss(y_i,f(x_i)) Remp=n1i=1nLoss(yi,f(xi))

  • 期望风险 R R R):真实风险、真实误差
    R = ∫ x × y L o s s ( y , f ( x ) )   P ( x , y )   d x d y R = \int_{x \times y} Loss(y,f(x)) \, P(x, y) \, dxdy R=x×yLoss(y,f(x))P(x,y)dxdy

    • 机器学习的目标是追求期望风险最小化
  • 期望风险( R R R)与经验风险( R emp R_{\text{emp}} Remp)的关系
    R ≤ R emp + e r r R ≤ R_{\text{emp}} + err RRemp+err

  • 结构风险最小化

    • 防止过学习,基于过学习时参数值通常都较大这一发现,在经验风险上加上表示模型复杂度的正则化项,在最小化经验风险降低模型复杂度之间寻找平衡

R srm = 1 n ∑ i = 1 n L o s s ( y i , f ( x i ) ) + λ J ( f ) R_{\text{srm}} = \frac{1}{n} \sum_{i=1}^{n} Loss(y_i,f(x_i)) + \lambda \mathcal{J}(f) Rsrm=n1i=1nLoss(yi,f(xi))+λJ(f)

  • 模型性能度量方法

    • 准确率 A C C = T P + T N P + N ACC=\frac{TP+TN}{P+N} ACC=P+NTP+TN
    • 错误率 e r r o r R a t e = F P + F N P + N errorRate=\frac{FP+FN}{P+N} errorRate=P+NFP+FN
    • 精确率 p r e c i s i o n = T P T P + F P precision=\frac{TP}{TP+FP} precision=TP+FPTP
    • 召回率 r e c a l l = T P T P + F N recall=\frac{TP}{TP+FN} recall=TP+FNTP
    • 综合分类率 F 1 - s c o r e = 2 × p r e c i s i o n × r e c a l l p r e c i s i o n + r e c a l l F1 \text{-} score=\frac{2\times precision \times recall}{precision + recall} F1-score=precision+recall2×precision×recall
  • 模型参数优化的两大思路

    • 频率学派最大似然估计(MLE)

      • 世界是确定的,有一个本体,这个本体的真值是不变的,我们的目标就是要找到这个真值或真值所在的范围
      • 存在唯一真值 θ \theta θ
    • 贝叶斯学派最大后验估计(MAP)

      • 世界是不确定的,人们对世界先有一个预判,而后通过观测数据对这个预判做调整,我们的目标是要找到最优的描述这个世界的概率分布
        P ( θ ∣ X ) = P ( X ∣ θ ) × P ( θ ) P ( X ) P(\theta | X) = \frac{P(X | \theta) \times P(\theta)}{P(X)} P(θX)=P(X)P(Xθ)×P(θ)

      • θ \theta θ是一个随机变量,符合一定的概率分布。在贝叶斯学派里有两大输入和一大输出,输入是先验概率 P ( θ ) P(\theta) P(θ)似然概率 P ( X ∣ θ ) P(X | \theta) P(Xθ),输出是后验概率 P ( θ ∣ X ) P(\theta | X) P(θX)

4.3 监督学习

  • 线性回归

    • 回归问题连续变量预测
    • 输出可为任意实数
    • 线性回归对离群点非常敏感,导致模型不稳定,为了缓解这个问题可以考虑逻辑斯蒂回归(logistic regression)
  • 逻辑回归

    • 分类问题二分类(逻辑斯谛回归、多项逻辑斯谛回归)
    • 输出为概率值,范围在 ( 0 , 1 ) (0,1) (0,1)之间
    • 是一种引入 s i g m o i d sigmoid sigmoid函数,非线性回归模型
  • 决策树

    • 通过树形结构来进行分类的方法

    • 每个非叶子结点表示对分类目标在某个属性上的一个判断,每个分支代表基于该属性做出的一个判断,每个叶子结点代表一种分类结果

    • 建立决策树的过程,就是不断选择属性值对样本集进行划分、直至每个子样本为同一个类别

    • 构建决策树过程

      • 信息熵(entropy)可以用来衡量样本集合纯度,越大说明不确定性越大,纯度越低
        E ( D ) = − ∑ k = 1 K p k log ⁡ 2 ( p k ) 有 K 个信息, p k 为第 k 个信息发生的概率 E(D) = - \sum_{k=1}^{K} p_k \log_2(p_k) \\ 有K个信息,p_k为第k个信息发生的概率 E(D)=k=1Kpklog2(pk)K个信息,pk为第k个信息发生的概率

      • 划分样本集前后信息熵的减少量称为信息增益(information gain),用来衡量样本复杂度减少的程度
        G a i n ( D , A ) = E ( D ) − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ E ( D i ) D i 为子样本集包含的样本数量 Gain(D,A) =E(D) - \sum_{i=1}^{n} \frac{|D_i|}{|D|}E(D_i) \\ D_i为子样本集包含的样本数量 Gain(D,A)=E(D)i=1nDDiE(Di)Di为子样本集包含的样本数量

      • 信息增益率
        i n f o = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ log ⁡ 2 ( ∣ D i ∣ ∣ D ∣ ) G a i n _ r a t i o = G a i n ( D , a ) i n f o info = - \sum_{i=1}^{n} \frac{|D_i|}{|D|} \log_2 \left( \frac{|D_i|}{|D|} \right) \\ Gain\_ratio = \frac{Gain(D, a)}{info} info=i=1nDDilog2(DDi)Gain_ratio=infoGain(D,a)

      • 启发式算法:先从候选划分属性中找出信息增益高于平均水平的,再从中选取增益率最高的

      • 剪枝是决策树对付 “ 过拟合 ” 的主要手段

        • 预剪枝:提前终止某些分支的生长
        • 后剪枝:生成一棵完全树,再回头剪枝

4.4 无监督学习

  • 主要的无监督学习方法:聚类、降维、推荐系统

  • K 均值聚类

    • 算法步骤
      • 选择 K K K个点作为初始质心
      • 将每个点指派到最近的质心,形成 K K K个簇
      • 对于上一步得到的结果,进行平均计算,得出新的质心
      • 重复上述步骤,直到质心不再发生变化
  • 特征降维

    • 维数灾难:在涉及到向量的计算的问题中,随着维数的增加,计算量呈指数倍增长的现象
    • 高维使得学习算法的泛化能力变弱
    • 降维:将训练数据中的样本从高维空间转换到低维空间
      • 不存在完全无损的降维
    • 主成分分析(PCA):通过将一个大的特征集转换成一个较小的特征集,这个特征集仍然包含了原始数据中的大部分信息,从而降低了原始数据的维数
      • 算法步骤
        • 数据标准化
        • 计算协方差矩阵
        • 计算协方差矩阵的特征值和特征向量
        • 选择主成分
        • 投影数据到低维空间

4.5 半监督学习

  • 三个基本假设
    • 平滑性假设
    • 聚类假设
    • 流形假设

五、深度学习

Q&A:为什么以前深度学习不 “ 深度 ” ,现在却 “ 深度 ” 了呢?

  1. 数据量的增加:以前数据量相对较小,限制了复杂模型的训练效果;现在随着互联网的发展,数据量大幅增加,使得深度学习模型能够学习到更多的特征和模式

  2. 计算能力的提升:以前计算资源有限,训练深度模型的时间和成本高昂;现在GPU的广泛应用,使得进行大规模并行计算成为可能,从而加速了深度学习模型的训练

  3. 算法和架构的创新:以前深度学习模型设计和训练技巧不够成熟,容易出现过拟合;现在新算法(如卷积神经网络CNN、循环神经网络RNN、Transformers等)和训练技巧(如Batch Normalization、Dropout、学习率调度等)的提出,使得训练深度模型变得更加高效和稳定

5.1 前馈神经网络

  • 前馈神经网络(feedforward neural network,FNN)是一种最简单的神经网络,由输入层隐藏层输出层组成

    • 每层神经元只和相邻层神经元相连,即每层神经元只接受相邻前序神经层中神经元传来的信息,只给相邻后续神经层中神经元传递信息
    • 同一层的神经元之间没有任何连接,后续神经层也不向前序相邻神经层传递信息
    • 是目前最为广泛的神经网络之一
  • 神经元

    • 给定 n n n个二值化输入数据 x i x_i xi与连接参数 w i w_i wi,MCP 神经元对输入数据线性加权求和,然后将结果根据阈值 θ \theta θ进行二值化,得到输出:
      y = Φ ( ∑ i = 1 n w i x i ) y = \Phi\left(\sum_{i=1}^n w_i x_i\right) y=Φ(i=1nwixi)

    • 二值可能是 0 0 0 1 1 1,也可能是 − 1 -1 1 1 1 1

  • 激活函数

    • 神经网络使用非线性函数作为激活函数,通过对多个非线性函数进行组合,来实现对输入信息的非线性变换

    • 激活函数必须是连续可导

    • 常用激活函数

      • s i g m o i d sigmoid sigmoid函数:
        原函数: f ( x ) = 1 1 + e − x 导数: f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) 原函数:f(x) = \frac{1}{1 + e^{-x}} \\ 导数:f'(x) = f(x)(1 - f(x)) 原函数:f(x)=1+ex1导数:f(x)=f(x)(1f(x))

        • 缺点:反向传播算法更新参数过程中易出现梯度消失问题(导数 < 1 <1 <1
      • t a n h tanh tanh函数:
        原函数: f ( x ) = 1 − e − 2 x 1 + e − 2 x 导数: f ′ ( x ) = 1 − f 2 ( x ) 原函数:f(x) = \frac{1 - e^{-2x}}{1 + e^{-2x}} \\ 导数:f'(x) = 1 - f^2(x) 原函数:f(x)=1+e2x1e2x导数:f(x)=1f2(x)

        • 缺点:反向传播算法更新参数过程中易出现梯度消失问题(导数 < 1 <1 <1
      • R e L U ReLU ReLU函数:
        原函数: f ( x ) = max ⁡ ( 0 , x ) 导数: 0 或 1 原函数:f(x) = \max(0, x) \\ 导数:0或1 原函数:f(x)=max(0,x)导数:01

        • 有效克服梯度消失问题
      • s o f t m a x softmax softmax函数,一般用在多分类问题中:
        f ( x i ) = e x i ∑ j = 1 k e x j f(x_i) = \frac{e^{x_i}}{\sum_{j=1}^k e^{x_j}} f(xi)=j=1kexjexi

        • 可将输出概率最大的作为分类目标
  • 损失函数(loss function)/ 代价函数(cost function)

    • 用来计算模型预测值与真实值之间的误差

    • 均方误差损失函数(MeanSquareError):
      MSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \text{MSE} = \frac{1}{n}\sum_{i=1}^n (y_i - \hat{y}_i)^2 MSE=n1i=1n(yiy^i)2

    • 交叉熵损失函数,度量两个概率分布之间的差异
      H ( p , q ) = − ∑ x p ( x ) log ⁡ q ( x ) H(p, q) = -\sum_x p(x) \log q(x) H(p,q)=xp(x)logq(x)

      • 旨在描绘通过概率分布 q q q(预测值)来表达概率分布 p p p(真实值)的困难程度
      • 交叉熵越小,两个概率分布越接近
  • 感知机模型

    • 单层感知机
      • 由一个输入层和一个输出层构成,输出层输出 − 1 -1 1 1 1 1
      • 可作为一种二类线性分类模型
      • 单层感知机构建损失函数来计算模型预测值与数据真实值之间的误差,通过修改权重最小化损失函数值,来优化模型参数
      • 单层感知机可被用来区分线性可分数据
    • 多层感知机
      • 由输入层、输出层和至少一层的隐藏层构成
      • 相邻层之间全连接
  • 参数优化

    • 神经网络参数优化是一种监督学习的过程

    • 模型会利用反向传播算法将损失函数计算所得误差从输出端出发,由后向前传递给神经网络中的每个单元,然后通过梯度下降算法对神经网络中的参数进行更新

    • 梯度下降(gradient descent)
      ∇ L = [ ∂ L ∂ w 1 ∂ L ∂ w 2 ⋮ ∂ L ∂ b 1 ⋮ ] \nabla L = \begin{bmatrix} \frac{\partial L}{\partial w_1} \\ \frac{\partial L}{\partial w_2} \\ \vdots \\ \frac{\partial L}{\partial b_1} \\ \vdots \end{bmatrix} \\ L= w1Lw2Lb1L

      • 批量梯度下降:在整个训练集上计算损失误差
      • 随机梯度下降:在每个训练样本上计算损失误差,收敛速度慢,但有时可能找到更好的解
      • 小批量梯度下降:选取训练集上小批量样本计算损失误差,最常用
  • 误差反向传播(error backpropagation,BP)
    w 1 n e w = w 1 − η × ∂ L ∂ w 1 w_1^{new} = w_1 - \eta \times \frac{\partial L}{\partial w_1} w1new=w1η×w1L

    • 在计算得到所有参数相对于损失函数 L L L的偏导结果后,利用梯度下降算法,通过 w 1 n e w = w 1 − η × ∂ L ∂ w 1 w_1^{new} = w_1 - \eta \times \frac{\partial L}{\partial w_1} w1new=w1η×w1L来更新参数取值。然后不断迭代,直至模型收敛,此时损失函数减少到其最小值

5.2 卷积神经网络

  • 卷积(convolution)是针对像素点的空间依赖性来对图像进行处理的一种技术(前馈神经网络处理图像时,由于模型参数巨大,不仅会占用大量计算机内存,也会模型的训练变得难以收敛)

  • 卷积滤波的结果在卷积神经网络中被称为特征图(feature map)

  • 下采样:对图像进行约减

  • 在卷积操作时,经常会采用 padding(填充)和 striding(步长)两种方法

    假设被卷积图像大小为 w × w w \times w w×w,卷积核大小为 F × F F \times F F×F,上下左右四个边缘填充像素行 / 列数为 P = ⌊ F 2 ⌋ P= \lfloor \frac{F}{2} \rfloor P=2F,步长为 S S S,则被卷积结果的分辨率 w − F + 2 P S + 1 \frac{w-F+2P}{S}+1 SwF+2P+1
    ⌈ w + 2 P − ( F − 1 ) S ⌉ = ⌈ w + 2 P − F + 1 S ⌉ = ⌊ w − F + 2 P S + 1 ⌋ \lceil \frac{w+2P-(F-1)}{S} \rceil = \lceil \frac{w+2P-F+1}{S} \rceil = \lfloor \frac{w-F+2P}{S}+1 \rfloor Sw+2P(F1)=Sw+2PF+1=SwF+2P+1

  • 池化(pooling)

    • 可用某一区域子块的统计信息来刻画该区域中所有像素点呈现的空间分布模式,来替代区域子块中所有像素点取值

    • 池化操作对卷积结果特征图进行约减,实现了下采样,同时保留了特征图中主要信息

      • 最大池化

      • 平均池化

      • k − m a x k-max kmax池化:取前 k 个最大值,常用于自然语言处理

      • 全局池化:更不容易过拟合,因为它没有需要优化的参数;对输入的空间平移更为稳健,因为它汇总了空间信息

  • 卷积操作和全连接计算在算法上是可相互转换的,如全连接计算可等效于卷积核为 1 × 1 1 \times 1 1×1的卷积运算

  • 卷积神经网络工作流程与结构

    • 对于输入的海量标注数据,通过多次迭代训练,卷积神经网络在经过若干次卷积操作,对卷积所得结果进行激活函数操作和池化操作后,最终通过全连接层学习得到输入数据的特征表达,即分布式向量表达

[ ( C o n v − R e L U ) ∗ N − P o o l i n g ? ] ∗ M − ( F C − R e L U ) ∗ K − S o f t m a x [(Conv−ReLU)∗N−Pooling?]∗M−(FC−ReLU)∗K−Softmax [(ConvReLU)NPooling?]M(FCReLU)KSoftmax

  • 多个卷积层 C o n v Conv Conv)后接激活函数( R e L U ReLU ReLU),然后是可选的池化层 P o o l i n g Pooling Pooling),最后是全连接层 F C FC FC)和激活函数( R e L U ReLU ReLU),最终输出通过 S o f t m a x Softmax Softmax进行分类

  • 防止过拟合的操作

    • 数据增强
    • Dropout
    • L1 和 L2 正则化
    • 早停法(提前终止)
  • 防止欠拟合的操作

    • 减少正则化
    • 增加训练时间

5.3 循环神经网络

  • 循环神经网络(recurrent neural network,RNN)是一类处理序列数据时采用的网格结构,能够刻画序列数据中存在的时序依赖关系

  • 循环神经网络本质是模拟人所具有的记忆能力,在学习过程中记住部分已经出现的信息,并利用所记住的信息影响后续节点输出

  • RNN 在自然语言处理如语音识别情感分析机器翻译等领域有重要应用

  • Vanilla RNN (SimpleRNN)循环神经网络模型

    • 循环神经网络在处理数据过程中构成了一个循环体

    • 对于一个序列数据,在每一时刻 t t t,循环神经网络单元会读取当前输入数据 x t x_t xt和前一时刻输入数据 x t − 1 x_{t−1} xt1所对应的隐式编码结果 h t − 1 h_{t−1} ht1,一起生成 t t t时刻的隐式编码结果 h t h_t ht
      h t = Φ ( W x ⋅ x t + W h ⋅ h t − 1 + b ) h_t = \Phi(W_x \cdot x_t + W_h \cdot h_{t-1} + b) ht=Φ(Wxxt+Whht1+b)

    • 激活函数一般可为 s i g m o i d sigmoid sigmoid t a n h tanh tanh,使模型能够忘掉无关信息同时更新记忆内容

    • 训练方式为沿时间反向传播算法(BPTT)

      • 根据时刻 t t t所得误差更新参数 W x W_x Wx
        ∂ E t ∂ W x = ∑ i = 1 t ∂ E t ∂ O t ∂ O t ∂ h t ( ∏ j = i + 1 t ∂ h j ∂ h j − 1 ) ∂ h i ∂ W x \frac{\partial E_t}{\partial W_x} = \sum_{i=1}^{t} \frac{\partial E_t}{\partial O_t} \frac{\partial O_t}{\partial h_t} \left( \prod_{j=i+1}^{t} \frac{\partial h_j}{\partial h_{j-1}} \right) \frac{\partial h_i}{\partial W_x} WxEt=i=1tOtEthtOt(j=i+1thj1hj)Wxhi
    • 序列过长时,循环神经网络也容易出现梯度消失梯度爆炸的问题

      • 梯度消失:梯度值随着层数的增加而迅速减小,最终趋近于零,导致靠近输入层的权重更新变得非常缓慢,甚至几乎不更新
      • 梯度爆炸:在反向传播过程中,梯度值随着层数的增加而迅速增大,最终变得非常大,超出了神经网络的正常处理范围,从而导致模型参数更新不稳定,甚至训练失败
  • 输入输出不同情况下循环神经网络结构:

    • “ 多对多 ”:输入和输出序列中包含多个单元(机器翻译)
    • “ 多对一 ”:输入序列数据中包含多个单元,输出序列数据中只包含一个单元(文本情感分类)
    • “ 一对多 ”:输入序列数据中只包含一个单元,输出序列数据中包含多个单元(图像描述生成)
  • 长短时记忆网络(LSTM):引入了内部记忆单元门结构来对当前输入信息以及前序时刻所生成的信息进行整合和传递,避免了梯度消失问题

    • 门结构:输入门、遗忘门、输出门
  • 门控循环单元(gated recurrent unit,GRU):一种对 LSTM 简化的深度学习模型

    • 不再使用记忆单元来传递信息,而是使用隐藏状态来传递,有更快的计算速度
    • 只包含更新门和重置门

5.4 Transformer

  • Transformer 模型:引入 “ 自注意力 ” 来计算自然语言句子中单词与单词之间的概率关联

  • 自注意力模型工作流程:

    • 首先生成每个单词的内嵌向量(embedding vector),记为 w i w_i wi

      • 查询向量 q i = W q × w i q_i=W^q \times w_i qi=Wq×wi
      • 键向量 k i = W k × w i k_i=W^k \times w_i ki=Wk×wi
      • 值向量 v i = W v × w i v_i=W^v \times w_i vi=Wv×wi
    • 自注意力权重公式:
      Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dk QKT)V

    • 自注意力模型就是要挖掘单词 w i w_i wi与其他单词在句子中因为上下文关联而具有的自注意力取值大小

  • Transformer 架构图(以机器翻译的训练任务为例):

    • 模型的输入输出
      • 输入:Inputs / Outputs(shifted right)
      • 输出:Output Probabilities
    • 内嵌向量,即词向量(Embedding)
    • 位置编码(Positional Encoding)
      • 表示单词出现在句子中的位置
    • 编码器(Encoder)
      • 由多个自注意力层和前馈神经网络组成
    • 解码器(Decoder)
    • 多头注意力机制(Multi-Head Attention)
      • 由多个 Self-Attention 组成
    • 前馈神经网络(Feed Forword)
      • 对每个位置的表示进行非线性变换,帮助模型进行更复杂的特征学习
    • 残差连接(Add)和层标准化(Norm)
      • 残差连接可以缓解梯度消失,改善梯度流动
      • 层标准化可以提高训练的稳定性和速度
    • 线性层(Linear)和 softmax 层
      • softmax 得到输出的概率分布,然后通过词典,输出概率最大的对应的单词作为预测输出

    Q&A:为什么我们不在编码器中使用带掩码的自注意力机制?

    1. 完整访问输入序列

    编码器的自注意力机制允许每个位置的表示访问输入序列中的所有其他位置。这种设计使得模型能够充分利用输入序列的全局信息,捕捉词之间的依赖关系。因此,在编码器中,使用带掩码的自注意力会限制这种信息的获取。

    1. 目标不需要逐步生成

    在解码器中,使用带掩码的自注意力机制是为了确保模型在生成序列时只能依赖于已生成的部分,以防止“窥视”未来的词。而编码器的任务是将整个输入序列编码成上下文表示,不涉及逐步生成,因此不需要这种限制。

  • Transformer 模型计算量公式:
    总计算量 = l ⋅ ( 12 h 2 + 13 h ) h 表示隐藏层的维度 , l 表示层数 \text{总计算量} = l \cdot (12h^2 + 13h) \\ h 表示隐藏层的维度,l 表示层数 总计算量=l(12h2+13h)h表示隐藏层的维度,l表示层数

  • GPT-3 架构:对 50275 个单词进行词向量建模,然后用 96 个堆叠的 Transformer 极尽其能对句子中每个单词与其他单词的自注意力关联进行挖掘,最后通过前馈神经网络对所得关联进行非线性映射

六、强化学习

6.1 强化学习问题定义

  • 强化学习基本概念:

    • 智能体(agent),根据经验做出判断并执行动作
    • 环境(environment),智能体以外的一切
    • 状态(state),智能体对环境的一种理解和编码
    • 动作(action)
    • 策略(policy),当前状态执行某个动作的依据
    • 奖励(reward)
  • 强化学习特点:

    • 交互式学习
    • 强化信息的延迟性
    • 无需先验知识
    • 增量式的在线学习
    • 可应用于不确定环境
  • 与监督学习和无监督学习相比,强化学习基于评估,数据来源于时序交互,决策过程是序贯决策,目标是选择能够获取最大收益的状态到动作的映射

  • 马尔可夫决策过程

    • 马尔可夫性(Markov property):下一刻的状态 X t + 1 X_{t+1} Xt+1只由当前状态 X t X_t Xt决定,与更早的所有状态均无关
    • 满足马尔可夫性的离散随机过程被称为马尔可夫链(Markov chain)
  • 定义离散马尔可夫过程

    - { S t } t = 0 , 1 , … \{S_t\}_{t=0,1,\ldots} {St}t=0,1,,可以定义状态转移概率
    P ( S t + 1 ∣ S t , A t ) P(S_{t+1} \mid S_t, A_t) P(St+1St,At)
    其中 A t A_t At为在状态 S t S_t St下执行的动作

  • 定义奖励函数

R t + 1 = R ( S t , A t , S t + 1 ) R_{t+1} = R(S_t, A_t, S_{t+1}) Rt+1=R(St,At,St+1)

描述从第 t t t步状态转移采取动作 A t A_t At到第 t + 1 t+1 t+1步状态的奖励

在每个时刻定义回报(return)来反映该时刻可得到的累加奖励
G t = R t + 1 + γ R t + 2 + γ 2 R t + 3 + ⋯ G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots Gt=Rt+1+γRt+2+γ2Rt+3+
其中 γ \gamma γ称为折扣因子

一般情况下,初始状态和终止状态并不包括在马尔可夫决策过程定义中,可以添加虚拟的初始状态和终止状态,虚拟初始状态以一定概率转移到真正初始状态,真正终止状态以概率 1 转移到虚拟终止状态

智能体逐步采取行动,可得到一个状态序列 ( S 0 , S 1 , … ) (S_0, S_1, \ldots) (S0,S1,)称为轨迹(trajectory),轨迹长度可以是无限的,也可以有终止状态 S T S_T ST
包含终止状态的问题叫分段(episodic)问题,此时从初始状态到终止状态的完整轨迹称为一个片段(episode)
不包含终止状态的问题叫持续(continuing)问题

强化学习问题定义

智能体选择动作的模型即策略函数, π ( s , a ) \pi(s,a) π(s,a)表示在状态 s s s下采取动作 a a a的概率
一个好的策略函数应该能够使智能体在采取了一系列行动之后可得到最佳奖励

价值函数(value function)
V π ( s ) = E π [ G t ∣ S t = s ] V_\pi(s) = E_\pi[G_t \mid S_t = s] Vπ(s)=Eπ[GtSt=s]
表示智能体在时刻 t t t时处于状态 s s s时,按照策略 π \pi π采取行动时所得到的回报的期望。

动作 - 价值函数
q π ( s , a ) = E π [ G t ∣ S t = s , A t = a ] q_\pi(s,a) = E_\pi[G_t \mid S_t = s, A_t = a] qπ(s,a)=Eπ[GtSt=s,At=a]

强化学习可以转化为一个策略学习问题,给定一个马尔可夫决策过程 M D P = ( S , A , P , R , γ ) MDP = (S, A, P, R, \gamma) MDP=(S,A,P,R,γ),学习一个最优策略 π ∗ \pi^* π,对任意 s ∈ S s \in S sS使得 V π ∗ ( s ) V_{\pi^*}(s) Vπ(s)值最大

贝尔曼方程 / 动态规划方程
V π ( s ) = ∑ a ∈ A π ( s , a ) q π ( s , a ) V_\pi(s) = \sum_{a \in A} \pi(s,a) q_\pi(s,a) Vπ(s)=aAπ(s,a)qπ(s,a)
可用动作 - 价值函数来表达价值函数

状态 s s s的价值可用该状态下可采取所有动作而取得的期望价值来表述
q π ( s , a ) = ∑ s ′ ∈ S P ( s ′ ∣ s , a ) [ R ( s , a , s ′ ) + γ V π ( s ′ ) ] q_\pi(s,a) = \sum_{s' \in S} P(s' \mid s,a) \left[ R(s,a,s') + \gamma V_\pi(s') \right] qπ(s,a)=sSP(ss,a)[R(s,a,s)+γVπ(s)]
可用价值函数来表示动作 - 价值函数

在某个状态下执行某一个动作所得的价值可以通过执行该动作之后进入的所有状态获得的瞬时奖励和后续状态可取得价值的期望来表示。

价值函数贝尔曼方程:
V π ( s ) = E a ∼ π ( s , ⋅ ) E s ′ ∼ P ( ⋅ ∣ s , a ) [ R ( s , a , s ′ ) , γ V π ( s ′ ) ] V_\pi(s) = E_{a \sim \pi(s, \cdot)} E_{s' \sim P(\cdot \mid s,a)} \left[ R(s,a,s'), \gamma V_\pi(s') \right] Vπ(s)=Eaπ(s,)EsP(s,a)[R(s,a,s),γVπ(s)]

价值函数取值和时间没有关系,只与策略 π \pi π、在策略 π \pi π下从某个状态转移到后续状态所取得的回报以及在后续所得回报有关
V π V_\pi Vπ由两个部分构成:执行当前动作所得到的瞬时奖励,在后续状态所能得到的回报的期望的折扣值

贝尔曼方程描述了价值函数或动作 - 价值函数的递推关系,是研究强化学习问题的重要手段

求解最优策略的一种方法是求解最优的价值函数或最优的动作 - 价值函数,即基于价值方法(value-based approach)

6.2 基于价值的强化学习

一种求解最优策略的思路:从一个任意的策略开始,首先计算该策略下价值函数,然后根据价值函数调整改进策略使其更优,不断迭代直到策略收敛。

通过策略计算价值函数的过程称为策略评估(policy evaluation)
通过价值优化策略的过程叫做策略优化(policy improvement)
策略评估和策略优化交替进行的强化学习求解方法叫做通用策略迭代(GPI),几乎所有强化学习方法都可以使用 GPI 来解释

策略优化定理

假设当前策略为 π \pi π,对应的价值函数和动作 - 价值函数为 V π , q π V_\pi, q_\pi Vπ,qπ,则可以构造策略
π ′ ( s ) = arg ⁡ max ⁡ a q π ( s , a ) \pi'(s) = \arg \max_a q_\pi(s,a) π(s)=argamaxqπ(s,a)
此时 π ′ \pi' π不比 π \pi π

给定策略、价值函数和动作 - 价值函数,就可以通过该式计算得到更好或同等的策略

6.3 基于策略的强化学习

七、博弈论

7.1 基本概念

  • 现代博弈论初步形成的标志:1944 年,冯•诺伊曼奥斯卡•摩根斯特恩(Oskar Morgenstern)合著的 **《博弈论与经济行为》**一书出版
  • 参与博弈的决策主体被称为玩家参与者,通常被认为是完全理性的
  • 在博弈中参与者能获得的与博弈相关的知识称为信息
  • 博弈需要遵循一定的规则
  • 参与者可以采取的行动方案称为策略
    • 策略必须是一整套在采取行动之前就已经准备好的完整方案
    • 一个参与者能采纳策略的全体组合形成其所拥有的策略集
    • 参与者也可以按照一定概率随机选择若干不同行动,称为混合策略,反之称为纯策略
  • 参与者采取各自行动后形成的状态称为局势,不同局势下各个参与者所得到的利益或回报称为博弈的收益
    • 混合策略下收益为期望收益
  • 博弈的分类
    • 是否允许参与者之间合作:合作博弈非合作博弈
    • 决策时间:静态博弈动态博弈
      • 静态博弈中所有参与者同时决策,动态博弈中由规则决定先后且后者知道前者的行动
    • 对信息的了解程度:完全信息博弈不完全信息博弈
      • 完全信息博弈中所有参与者都知道所有信息,不完全信息博弈中参与者只知道部分信息
      • 完美信息博弈:参与者知道所有参与者之前采取的行动
    • 总收益:零和博弈非零和博弈
  • 纳什均衡博弈的稳定局势
    • 纳什定理若参与者有限,每位参与者采取策略的集合有限,收益函数为实值函数,则博弈对抗必存在混合策略意义下的纳什均衡
    • 策梅洛定理对于任意一个有限步的双人完全信息零和动态博弈,一定存在先手必胜策略、后手必胜策略或双方保平策略

7.2 博弈策略求解

  • 遗憾最小化算法

    • 假设一共有 N N N个玩家,玩家 i i i在博弈中采取的策略为 σ i \sigma_i σi

    • 一个策略组包含所有玩家策略,用 σ = ( σ 1 , σ 2 , … , σ ∣ N ∣ ) \sigma = (\sigma_1, \sigma_2, \ldots, \sigma_{|N|}) σ=(σ1,σ2,,σN)表示

    • σ − i \sigma_{-i} σi表示 σ \sigma σ中除了 σ i \sigma_i σi之外的策略(即除去玩家 i i i所采用的策略), σ − i = { σ 1 , σ 2 , … , σ i − 1 , σ i + 1 , … , σ N } \sigma_{-i}=\{\sigma_1 ,\sigma_2,…,\sigma_{i-1},\sigma_{i+1},…,\sigma_N\} σi={σ1,σ2,,σi1σi+1,,σN}

    • 玩家 i i i对于所有其他玩家的策略组 σ − i \sigma_{-i} σi的最佳反应策略 σ i ∗ \sigma_i^* σi满足如下条件:
      u i ( σ i ∗ , σ − i ) ≥ max ⁡ σ i ′ ∈ Σ i u i ( σ i ′ , σ − i ) u_i(\sigma_i^*, \sigma_{-i}) \geq \max_{\sigma_i' \in \Sigma_i} u_i(\sigma_i', \sigma_{-i}) ui(σi,σi)σiΣimaxui(σi,σi)

    • 纳什均衡:策略组 σ = ( σ 1 ∗ , σ 2 ∗ , … , σ ∣ N ∣ ∗ ) \sigma = (\sigma_1^*, \sigma_2^*, \ldots, \sigma_{|N|}^*) σ=(σ1,σ2,,σN)是纳什均衡当且仅当对每个玩家 i ∈ N i \in N iN,满足如下条件:

    u i ( σ ∗ ) ≥ max ⁡ σ i ′ ∈ Σ i u i ( σ 1 ∗ , σ 2 ∗ , … , σ i ′ , … , σ ∣ N ∣ ∗ ) u_i(\sigma^*) \geq \max_{\sigma_i' \in \Sigma_i} u_i(\sigma_1^*, \sigma_2^*, \ldots, \sigma_i', \ldots, \sigma_{|N|}^*) ui(σ)σiΣimaxui(σ1,σ2,,σi,,σN)

    • 在博弈中,玩家 i i i在第 T T T轮次(每一轮表示一次博弈完成)采取策略 σ i \sigma_i σi累加遗憾值定义如下:

    R e g r e t i T ( σ i ) = ∑ t = 1 T ( u i ( σ i , σ − t ) − u i ( σ t ) ) Regret_i^T(\sigma_i) = \sum_{t=1}^{T} (u_i(\sigma_i, \sigma_{-t}) - u_i(\sigma^t)) RegretiT(σi)=t=1T(ui(σi,σt)ui(σt))

    • 有效遗憾值
      R e g r e t i T , + ( σ i ) = m a x ( R e g r e t i T ( σ i ) , 0 ) Regret_i^{T,+}(\sigma_i) = max(Regret_i^T(\sigma_i),0) RegretiT,+(σi)=max(RegretiT(σi),0)

    • 在博弈对决中,不同玩家在不同时刻会采取相应策略以及行动。策略 σ \sigma σ下对应的行动序列 h h h发生的概率表示为 π σ ( h ) \pi_\sigma(h) πσ(h)。于是,
      π σ ( h ) = ∏ i ∈ N π i σ ( h ) \pi_\sigma(h) = \prod_{i \in N} \pi_i^\sigma(h) πσ(h)=iNπiσ(h)
      这里 π i σ ( h ) \pi_i^\sigma(h) πiσ(h)表示玩家 i i i使用策略 σ i \sigma_i σi促使行动序列 h h h发生的概率。除玩家 i i i以外,其他玩家通过各自策略促使行动序列 h h h发生的概率可表示为:
      π − σ i ( h ) = ∏ j ∈ N ∖ { i } π j σ ( h ) \pi_{-\sigma_i}(h) = \prod_{j \in N \setminus \{i\}} \pi_j^\sigma(h) πσi(h)=jN{i}πjσ(h)

    • 对于每个玩家 i ∈ N i \in N iN u i : Z → R u_i : Z \rightarrow \mathbb{R} ui:ZR表示玩家 i i i的收益函数,即在到达终止序列集合 Z Z Z中某个终止序列时,玩家 i i i所得到的收益。

    • 玩家 i i i在给定策略 σ \sigma σ下所能得到的期望收益可如下计算:
      u i ( σ ) = ∑ h ∈ Z u i ( h ) π σ ( h ) u_i(\sigma) = \sum_{h \in Z} u_i(h) \pi_\sigma(h) ui(σ)=hZui(h)πσ(h)

7.3 博弈规则设计

八、安全与可信

8.1 人工智能伦理

8.2 人工智能安全性

  • 攻击方法

    • 对抗攻击(推理阶段)
      • 白盒攻击:预先知道模型参数,利用模型梯度信息制作对抗样本
      • 黑盒攻击:不知道模型参数,利用输入输出对制作对抗样本
    • 模型隐私窃取(推理阶段)
    • 数据投毒攻击(训练阶段)
    • 后门攻击(训练阶段)
  • 防御方法

    • 测试阶段的防御方法:在测试阶段引入随机性,可以缓解或消除对抗噪声的负面影响
    • 训练阶段的防御方法:将对抗样本以数据增强的方式纳入模型的训练过程中

8.3 人工智能可信性


http://www.kler.cn/a/471459.html

相关文章:

  • JavaEE初阶——计算机工作原理
  • Element-plus表单总结
  • [项目实战2]贪吃蛇游戏
  • VR+智慧消防一体化决策平台
  • JAVA创建绘图板JAVA构建主窗口鼠标拖动来绘制线条
  • jenkins入门6 --拉取代码
  • AI赋能金融服务:效率与安全的新高度
  • kvm虚拟机网络桥接和读取ip
  • Conmi的正确答案——Cordova使用“src-cordova/config.xml”编辑“Android平台”的“uses-permission”
  • CNN-BiLSTM-Attention模型详解及应用分析
  • dubbo3 使用注册中心 nacos
  • 网络安全|应急响应沟通准备与技术梳理(Windows篇)
  • Spring Boot整合Minio实现文件上传
  • 设计模式从入门到精通之(三)单例模式
  • mindspore更新set_context()为set_device()
  • 复制粘贴到可见单元格,并且带有原格式-Excel易用宝
  • 无人机+Ai应用场景!
  • 【C++】线程启动、结束与创建线程写法
  • 标准库简介 - STL容器、算法简介
  • 快手短剧播放器uniapp如何引入与对接?
  • Python实战技巧:字典键删除与数据处理
  • Kafka优势剖析-无锁设计与多线程模型
  • git push报错:fatal: Authentication failed for ‘https://gitclone.com
  • 华为ensp-BGP路由引入
  • HTML - <script>,<noscript>
  • MySQL insert or update方式性能比较