Week3:
这节课的主要内容是监督学习,并讲了其中的一种模式:Perceptron
部分定义内容描述(监督学习与无监督学习):
监督学习:所有的分类在训练所给的例子中已经“见过”。用来训练的数据集必须具有标签(pre-defined classes)。同时,你所要使用的测试数据也需要是相应已经学习过的类才可以。否则会无法识别。
无监督学习:所给出的数据集的类标签都是未知的,而该种学习方式通常被用于给定一组数据,然后确定该组数据中是否存在相应的类或者群/组。
在这里简单的举例一下:
Supervised-使用只有猫和狗的图片来训练,并且图片都具有相应的标签,训练完成后可以高效的识别猫或狗的图片,但是无法识别其它动物。
Unsupervised-使用多种动物的图片,而且每张图片都没有相应的标签,机器会通过识别来对数据进行分析并判断在不同的目标数据之间是否存在分类的可能,并进行相应的分类,最终的训练结束后,机器可以识别数据集中的每种动物,并给予相应的分类名(如果你给出的话,否则由机器提供,近似于知道测试图片和数据集中的哪一类的图片属于同一物种,但没有详细名称)。
监督学习的两个步骤:
学习(训练-Training):使用训练数据学习一个模型。
测试:使用该模型未识别过的数据去测试模型,以便于去评估该模型的准确性。
Perceptron(主要内容):
该方法是一种独特的神经网络模型,它会随着经验来使用纠错规则来不断修改各个输入量的权重,从而使模型的判断趋向于准确。
它的结构非常简单,只有3层(见图)。每个层都由多个单元组成,如输入层就是输入单元,输出层就是输出单元。并且每个输出单元都与所有输入单元相连,换句话说,所有输出的值都会受所有输入的值的影响。而中间的那一层可以理解为存放各个连接的权重的层,它们决定该连接中(输出→输出)该输入单元对输出单元的影响的大小。
表达式(假设输出位为j):
Sj表示输出的值,w表示i位输入对j位输出的影响,ai则是i位的输入单元所输入的值。
该模型一般用于判断布尔类型的问题,如:
当最终Sj>设定的阈值时,为是,反之则为否。(theta_j代表由j位输出单元输出的值对最终答案的影响的阈值)
最后一个点——修正/纠错规则:
对于输出错误的表达式一般用该式来表达:
e代表错误,t则是本来的正确值,x则是j位输出单元输出的值,它们相减即为相应的错误值。
有了错误值,就可以实现权重的修改表达式:
表达式的参数中,c是我们在训练模型时规定的变化因子(也可以理解为学习率),并且为了保险起见,避免矫枉过正,一般会设置一个相应小的值,如0.25。
接下来我们看一个例子:
假设一个Perceptron模型,它的输入层有3个单元,输出层有一个单元,输入层单元描述如下:
口味的甜与否,种子和表皮是否能使食,3个变量。已经最终的输出,“是否是个好水果”:
这是刚开始训练时的模型:
可以看到,3个输入单元的权重比都为0,而答案阈值为0.4,大于0.4的才是“好水果”。
此时输入一个香蕉来进行训练:
拥有甜味,种子可以吃,表皮不能吃,按照前面的规则分别为1,1,0。使用前面的表达式计算后,Sj为0*1+0*1+1*1=0。数值小于0.4,所以最终会输出“不是好水果”。但是训练的数据的答案是“好水果”。因此使用前面的权重变更公式。
c我们规定为0.25,如此,new W1= 0.0+0.25*(1-0)*1,W2= 0.0+0.25*(1-0)*1,值得一提的是,因为第三个输入值为0,所以权重无法变更。变更之后:
之后我们再输入一个梨(“好水果”)进行训练:
使用纠错规则后变化如下:
再用草莓进行训练(“好水果”):
此时该模型已经满足要求了。
最终,随着训练数据的增加,该模型出现错误的概率会越来越少,当正确率达到了一定的区间时,即为训练成功(因为错误总会出现,虽然理论上出现错误的概率是无限小,但客观来说错误的存在是必然的,随着测试/使用次数的增加,总会有令人意想不到的错误发生)。
总结:
这一周的内容就结束了,相当简单,该文章中存在的图片都取自课件,侵删。