一些复杂问题,如网页搜索,垃圾邮件拦截,标记照片等,我们并不知道如何显式地编写人工智能程序,只能让机器学会如何自己去做。
定义: 一个好的学习问题定义如下,一个程序被认为能从经验E中学习,解决任务T,达到性能度量值P,当且仅当有了经验E后,经过P评判, 程序在处理T时的性能有所提升。
监督学习: 数据集已经带有正确答案
包括:
回归:预测连续值输出;
分类:预测离散值输出;
支持向量机可以处理无限多特性的数据集(即无限维数据)
无监督学习: 数据集无正确答案,也无类型
包括:
聚类:从大型的数据集中,找出类型结构
非聚类:如鸡尾酒会算法,实现音频分离(SVD:奇异值分解)
建议先用MATLAB挑选算法,然后再用C++或Java去具体实现,但这是比较老的做法,现在多用Python
单变量线性回归模型
θ \theta θ为要预测的参数, h h h为要预测的函数,被称为假设函数只是历史问题
为了合理选择 θ i \theta_i θi,定义了代价函数 J ( θ 1 , θ 2 ) J(\theta_1,\theta_2) J(θ1,θ2)
能使 J ( θ 1 , θ 2 ) J(\theta_1,\theta_2) J(θ1,θ2)最小的 ( θ 1 , θ 2 ) (\theta_1,\theta_2) (θ1,θ2)即为最好的 ( θ 1 , θ 2 ) (\theta_1,\theta_2) (θ1,θ2),从而得到了最好的 h ( θ ) h(\theta) h(θ)
这里使用的代价函数为平方差代价函数,即使得预测值与真实值的误差平方和最小。以后还会有其他的代价函数。
为什么除以2m? 或许后面的平方求导后可与2约掉
先考虑 θ 0 = 0 \theta_0=0 θ0=0的情况
不同的 θ 1 \theta_1 θ1对应左图中的不同直线,对应右图中的不同的点,当 θ 1 = 0 \theta_1=0 θ1=0时, J ( θ 1 ) J(\theta_1) J(θ1)最小,也最吻合训练集。
现在来考虑 θ 0 \theta_0 θ0和 θ 1 \theta_1 θ1都不为0的情况
代价函数将是两个自变量的函数
但一般不用三维图表示,而用 θ 0 − θ 1 \theta_0-\theta_1 θ0−θ1图,也就是等高线图来表示
梯度下降法:
可以解决有限个参数的问题;
但可能会陷入局部最小值,初始值的微小不同就可能导致陷入不同的局部最小值
梯度下降法可以用下山来比喻:从某一点(即初始值)用小碎步(可选不同的步长)开始下山,每到一个点,选择在此处下山最快的方向(就是切线斜率/梯度最大的方向),从而到下一个点。
关于右上角绿色式子:
: = := :=是赋值 = = =是判定是否相等(来自Pascal语言,和其他语言不一样)
α \alpha α是学习速率,决定步长;偏导决定方向;对每一个参数 θ j \theta_j θj,都要进行更新,必须同步更新,才是公认的梯度下降法。
不同步更新有时也能得到正确的答案,但不推荐,也不叫做梯度下降法。
接下来进入正题:
将代价函数中的偏导数进一步计算:
一般的代价函数可能有多个局部最小值(local minimum),但对于线性规划而言,其代价函数是只有一个全局最小值的凸函数,所以使用梯度下降法,一定会获得全局最优解,不会陷入局部最优。
R 4 × 2 R^{4\times2} R4×2表示所有 4 × 2 4\times2 4×2矩阵的集合
R 4 R^4 R4 表示所有四维向量的集合
矩阵一般用大写字母表示,而向量一般用小写字母,常用y
向量是只有一列元素的矩阵
0-索引和1-索引:0-索引在编程中常用,1-索引在数学中常用,本课程中用1-索引
加法:对应元素相加
相加的两个矩阵维度相同,相加得到的矩阵依然是这个维度
标量乘法(数乘):每个元素都乘以这个数
得到的矩阵和原矩阵维度相同
满足乘法交换律
不满足交换律: A×B和B×A不一定相等
不满足结合律 :(A×B)×C和A×(B×C)不一定相等
但当单位矩阵出现的时候,交换律和结合律就可以满足