李宏毅机器学习第三周_神奇宝贝分类、逻辑回归

目录

摘要

ABSTRACT

一、神奇宝贝分类

How to do classification?

Step1:Function Set

Step2:Goodness of a function

二、逻辑回归 

Step1:Function set

Step2:Goodness of a Function

Step3:Find the best function

Logistic Regression与Linear Regression 的区别:

Discriminative  vs  Generative

Multi-class Classification

 总结


摘要

本文主要介绍了深度学习中分类问题的解决方法,以神奇宝贝分类为例,通过选取适当的函数和损失函数,以及使用算法如朴素贝叶斯、逻辑回归和多分类算法进行分类预测。对于逻辑回归,其基本原理是将输入特征通过线性加权求和,并经过sigmoid函数转化为0-1之间的值,从而得到样本为正的概率,最后通过交叉熵损失函数优化模型预测结果。需要注意的是,在分类分界线不为直线的情况下,需要进行特征转换或使用多个模型的方法进行解决。此外,机器也可以通过自动学习和产生Feature Transformation的方法,将多个逻辑回归模型组成神经网络,提升分类预测的准确性。

ABSTRACT

This article mainly introduces the solution to the classification problem in deep learning, using Pokémon classification as an example. By selecting appropriate functions and loss functions, as well as using algorithms such as Naive Bayes, logistic regression, and multi-classification for classification prediction. For logistic regression, its basic principle is to linearly weight the input features, and transform them into values between 0-1 through the sigmoid function to obtain the probability that the sample is positive. Finally, the model prediction results are optimized through the cross-entropy loss function. It should be noted that in the case where the classification boundary is not a straight line, it is necessary to perform feature transformation or use multiple models to solve the problem. In addition, machines can also use the method of automatic learning and generating Feature Transformation to compose neural networks from multiple logistic regression models to improve the accuracy of classification prediction.

一、神奇宝贝分类

神奇宝贝有如图18种属性:水、电、火等等,现在找出一个函数,输入是一只Pokemon,输出的是这只Pokemon属 于哪一种属性。如输入的是皮卡丘,输出的是雷;输入的是杰尼龟,输出的是水;输入的是妙娃草,输出的是草。

 如何将一只Pokemon数值化,代入函数,从而判断出Pokemon的属性呢?

一只Pokemon的整体强度、生命值、攻击力、防御力、特殊攻击力、特殊防御力、速度可以用数字所表示。

How to do classification?

Training data for classification (首先要收集data)

Regression:可以用Regression来解classification这个问题。Training:假设现在输入的属于class 1,则代表target是1;输入的属于class 2,则代表target是-1;Testing:如果数值接近1时,属于class 1;如果数值接近-1时,属于class 2;(即以0为分界,大于0时,属于class 1;小于0时,属于class 2)

假设现在的model是 y = b + w1*x1 + w2*x2,输入x1、x2,蓝色是class1,红色是class2。如果用Regression的方式,蓝色越接近1越好,红色越接近-1越好。分界线为绿色的直线。

 但是,如果class1的分布如下图所示,绿色的直线(左上角小于0;右下角大于0,越偏右下越大),远大于1的点对于Regression来说是不好的,所以得到的线不会是绿色的直线,会是紫色的。(这样蓝色的点就不会偏大)

所以用Regression的方式来做,会不利于那些太正确的点,得不到好的结果。

 Ideal Alternatives:

  1. Function:找一个函数,将值代入,如果大于0,输出class 1,否则输出class 2。
  2. Loss Function:在Training data 上所得到的错误的次数,错误的次数越小代表model越好。
  3. Find the best function

Step1:Function Set

 EXAMPLE:

有两个盒子,盒子里面有蓝球、绿球。得到一个蓝球的概率如图。

 同理,把盒子换成class 1、class 2,x属于class 1的概率如图。P(C1) 表示从class 1抽一个x的概率;P(C2) 表示从class 2抽一个x的概率;P(x|C1) 表示从class 1中抽出x的概率;P(x|C2) 表示从class 2中抽出x的概率。(从Training data 中估测出这些值)

Generative Model:可以计算某一个x出现的概率。

 计算P(C1)、P(C2):现在只考虑二元分类,把编号小于400的水系、一般系的来当做Training data,79只水系,61只一般系。

 计算P(x|C1):

给一只海龟,求这只海龟是从水系中挑出来的概率。水系的神奇宝贝一共有79种,这只海龟不属于这79只当中。但是这只海龟是水系的。把79只水系的神奇宝贝的防御力、特殊防御力画图如图所示,某个点就表示一只Pokemon。不能说这个概率就是0,可以假设这79只Pokemon只是水系Pokemon的冰山一角。假设这79个点是从Gaussian distribution中找到的。

 Gaussian distribution:

输入的是某一只Pokemon的数值,输出的是这只Pokemon从x中抽出的概率。概率的分布由 mean 、covariance matrix 决定。

 从Gaussian 中sample出79个点如图所示,估测出mean 、covariance matrix。给出一个新的点x,可以经过运算,得出x从Gaussian中sample出来的概率。

Step2:Goodness of a function

如何找出mean 、covariance matrix呢?

这79个点可以从任何一个Gaussian中sample出来,不管mean 、covariance matrix在什么位置,都可以sample出来,只不过是概率的问题。所以只要有mean 、covariance matrix,就可以算出这个Gaussian sample出这些点的概率。

 找出这个Gaussian,sample出这79个点的概率最大。找不同的mean 、covariance matrix,代入求出概率最大的组合。

 79只水系、一般系的Pokemon算出来的mean 、covariance matrix如图所示。

Now we can do classification:计算出P(C1)、P(C2)、P(x|C1)、P(x|C2)就可以算出P(C1|x)。结果如图,横轴为防御力,纵轴为特殊防御力,蓝色为水系的Pokemon,红色为一般系的Pokemon,可以算出P(C1|x),在右上位置是水系的Pokemon的概率大;在左下位置是一般系的Pokemon的概率大。

在Training data上 概率大于0.5,就是class 1, 概率小于0.5,就是class 2。

 在Testing data上 概率大于0.5,就是class 1, 概率小于0.5,就是class 2,正确率为47%。

 以上是二维空间下的正确率,机器学习可以考虑到高维的,神奇宝贝要考虑七个,total、hp、att、sp att、de、sp de、speed。计算出mean 、covariance matrix,正确率54%,仍然不理想。

现在有79只水系的Pokemon,标号从1到79,有61只一般系的Pokemon,编号从80到140。两个属性的Pokemon从不同的Gaussian 生成的,Gaussian中用同一个covariance matrix,不同的mean。计算这140只Pokemon的likelihood:

 得到的结果:分界线变为一条直线,正确率提高到了73%。

 可以把P(C1|x)简化:

二、逻辑回归 

Step1:Function set

逻辑回归是一种分类算法,通过将输入的特征以及相应的权重进行线性加权求和,然后将结果通过sigmoid函数压缩到0到1之间,得到样本为正的概率。如图即为图像化的Logistic Regression。

Step2:Goodness of a Function

假设有N个Training Data,这N个Training Data是从Possibility函数中产生的,给定一组w、b就可以计算产生着N个Training Data的概率。计算概率即把x代入函数中再相乘(如果x属于class1,则直接代入;如果x属于class2,则等于1减代入值)。最好的w、b参数是使代入求得的概率最大一组,求w、b最大化这个函数可以转化,转化为求最小值,如图。

 可以最后化成如图,其实就是Cross entropy(交叉熵),交叉熵是一种用于衡量模型预测结果与实际结果的差异的损失函数。

Step3:Find the best function

 Gradient Descent:求微分

Logistic Regression与Linear Regression 的区别:

1. Logistic Regression的输出为0-1;Linear Regression输出值可以是任何值。

2. Logistic Regression定义一个函数的好坏的Loss Function是求所有的data的Cross entropy(交叉熵),越接近越好;Linear Regression定义一个函数的好坏的Loss Function是将代入值减去target的值得平方。

3.Logistic Regression、Linear Regression的Gradient Descent式子一样,唯一区别是Logistic Regression的函数取值为0-1;Linear Regression的函数取值可以是任何值。

 如果在Logistic Regression用Square error平方和的方法定义一个Loss Function会怎么样?

将函数的输出值减去target的平均值的值求平方,用 Gradient Descent来算最小值。会出现取不同的值求微分的结果都是0,不管离目标远近,求微分都等于0。

 造成的问题:平方误差是一种在回归问题中使用的损失函数,它对异常值比较敏感,并且对于分类问题来说,它的反向传播可能会导致梯度消失或梯度爆炸。因此,如果在逻辑回归中使用平方误差作为损失函数,可能会导致性能下降。如:距离微分值很远的地方,微分值依然很小,更新很慢。

Discriminative  vs  Generative

 Logistic Regression的方法叫做Discriminative,用Gaussian来求概率的方法叫做Generative。它们的函数是一样的。

 用 Logistic Regression可以直接找出w、b。用Generative Model算出mean1 、mean2 、covariance matrix,代入下式然后算出w、b。 对比这两个方法,找出来的w、b是不同的。Discriminative  Model求出来的结果比Generative Model更准确。

Discriminative  Model求出来的结果并不一定会比Generative Model更准确。

 Example:

假设有一组Training data,有两种class。每个data有两个feature,一共有13个data,如图所示。

 用Naive Bayes计算Testing data 来自class 1的概率:小于0.5,所以得出data 来自class 2。显然这是一个错误的结果,data 应该来自class 1。

所以Discriminative  Model并不一定胜于Generative Model,Discriminative Model(判别式模型)的目的是直接从输入数据中对类别或标签进行预测,避免了建立数据的生成模型。Generative Model(生成模型)是一种能够建立数据的生成模型,即通过学习类别条件概率P(x|y) 和先验概率P(y) ,从而计算后验概率P(y|x),来预测类别或标签。如果Training data很少,Generative Model会更准确。

Multi-class Classification

假设现在有三个class,每一个class都有自己的w、b,得到z1、z2、z3。

 将z1、z2、z3代入到Softmax,加起来分别除以这三项得到如图。输出值一定是正的,在0-1之间,相加是1。

 计算Cross Entropy(交叉熵),属于class1,class2,class3的target如图所示。  

 Limitation of Logistic Regression

一组data如图,用Logistic Regression来进行分类,class 1的概率大于0.5,class 2的概率小于0.5。

 因为Logistic Regression的class之间的分界线就是一条直线。不管怎么分,都无法将红色、蓝色单独分开。

解决这个问题的方法是Feature Transformation,做一些转化,让Logistic Regression可以处理。如图,转化之后分界线可以将红色、蓝色分开。

 但是往往Feature Transformation难找到,所以机器要自己产生Feature Transformation,把很多的Logistic Regression cascade起来。假设输入x1、x2,通过Logistic Regression Model加起来通过sigmoid function得到新的Transform 1,另外一个Logistic Regression Model输入x1、x2加起来通过sigmoid function得到新的Transform 2。再接另外一个Logistic Regression Model,输入Transform 1、Transform 2进行分类。

 把这些Logistic Regression Model叠在一起,一个Logistic Regression Model叫做neuraon,串起来所形成的network就叫做neural network,这就是deep learning。

 总结

 本文主要介绍了分类问题中的两个常用算法,即朴素贝叶斯和逻辑回归,其中朴素贝叶斯属于生成模型,逻辑回归属于判别模型。以神奇宝贝分类为例,演示了生成模型和判别模型的训练过程和使用方法,并介绍了解决分类分界线不为直线的方法,即通过特征转换或神经网络进行处理。同时,本文还对逻辑回归与线性回归的区别进行了解释,并简单介绍了多分类问题的解决方法—— softmax回归。最后,本文探讨了逻辑回归的局限性,并介绍了神经网络所带来的新的算法思路——深度学习。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值