TensorFlow的一些基本概念

分类问题和回归问题

在实际生活中,人们面临的问题无非就是离散的和连续的。

比方区分出某个人属于男性还是女性,比方衣服是什么颜色的,什么种类的,这些都是在有限数量的结果中寻找答案,也就是最终结果只能是N个里面的某一个,这种问题就是分类问题 。分类问题预测的是类别,每个结果都是平等的,不存在好坏的区分。

另一种问题,结果可以有无限多的可能,比方玩游戏有个得分,最终是要让这个分数越高越好,而且结果有很多可能,但最终结果只有一个分数,每个结果并不是平等的,有个好坏差别,分数越高越好,这种问题就是回归问题

在机器学习中,分类问题输出的是一个概率分布,比方一个三分类的问题,最终输出的结果可能是

0.1,0.7,0.2,每个值表示的是所属分类的概率,因此0.1,0.7,0.2表示的是这次预测的结果是第二个分类的可能性最高,概率为70%。而回归问题输出的是一个值,比方FlappyBird,最后得分是23。

不同的问题,我们所用的TensorFlow模型是不一样的,后面实战中会讲到。

目标函数概念

首先,为什么需要目标函数?来看这么一个三分类的问题。

如果A模型预测一件衣服是T恤,衬衫,毛衣的最终概率输出是0.1,0.7,0.2,而B模型预测的概率输出是0.3,0.5,0.2,显然这两个模型预测的结果都是这件衣服是个衬衫,如果实际这件衣服就是个衬衫,那么很显然,A模型预测是要比B模型的好,因为A模型预测它是衬衫的概率比B模型的高。那么在模型的预测结果都是衬衫的情况下,怎么去评估哪个模型更加准确以实现帮助我们评估和优化模型的目的呢,这就需要目标函数了。

比方上面A、B两个模型,实际最正确的概率分布应该是0,1,0,那么A模型的目标函数可以这么定义f(x)=1n∑x,y(y−model(x))2f(x) = \frac{1}{n} \displaystyle\sum_{x,y} (y-model(x))^{2}f(x)=n1x,y∑(y−model(x))2

上面的 y 表示实际的概率,model(x)表示模型预测的概率。套用到上面A0.1,0.7,0.2、B0.3,0.5,0.2两个模型的预测结果上,就可以分别得出他们的目标函数是:
A=((0−0.1)2+(1−0.7))2+(0−0.2)2)/3=0.14A=((0-0.1)^{2}+(1-0.7))^{2}+(0-0.2)^{2})/3=0.14A=((0−0.1)2+(1−0.7))2+(0−0.2)2)/3=0.14
B=((0−0.3)2+(1−0.5))2+(0−0.2)2)/3=0.38B=((0-0.3)^{2}+(1-0.5))^{2}+(0-0.2)^{2})/3=0.38B=((0−0.3)2+(1−0.5))2+(0−0.2)2)/3=0.38

由公式可以很容易看出平方差损失函数评估的是实际预测结果离正确结果的误差,也就是说f(x)越小表示预测的结果越准确,所以,上面可以看出A的目标函数小于B的,A的模型预测效果更好。如果有个C模型预测结果是0,1,0那么得到的目标函数损失自然是0了,也就是完美命中。

目标函数有哪些

分类问题:

上面介绍的是取各个值之间的差值做平方差来作为目标函数,也即:

平方差损失: f(x)=1n∑x,y(y−model(x))2f(x) = \frac{1}{n} \displaystyle\sum_{x,y} (y-model(x))^{2}f(x)=n1x,y∑(y−model(x))2

除了平方差损失,还有交叉熵损失,也是描述模型好坏的一个函数:

交叉熵损失: f(x)=1n∑x,yy.ln(model(x))f(x) = \frac{1}{n} \displaystyle\sum_{x,y} y.ln(model(x))f(x)=n1x,y∑y.ln(model(x))

根据平方差损失,很容易联想到其实,绝对值也可以用于描述误差:

绝对值损失: f(x)=1n∑x,y∣y−model(x))∣f(x) = \frac{1}{n} \displaystyle\sum_{x,y} \mid y-model(x)) \midf(x)=n1x,y∑∣y−model(x))∣

这些都可以用于分类问题的目标函数计算。

回归问题:

由于回归问题最终输出是一个值,因此,它的目标函数是比较简单的,就是和真实值平方差计算,或者取差值的绝对值,最终得到它离真实的值的误差,用这个误差来评估预测的好坏。

平方差损失: f(x)=(y−model(x))2f(x) = (y-model(x))^{2}f(x)=(y−model(x))2

绝对值损失: f(x)=∣y−model(x))∣f(x) =\mid y-model(x)) \midf(x)=∣y−model(x))∣

TensorFlow的训练过程其实就是不断的喂数据,然后通过目标函数的值来进行参数的调整,最终使目标函数趋于目标值的过程。

相关推荐
风华圆舞2 分钟前
鸿蒙 + Flutter 下 AI 助手为什么要支持流式输出
人工智能·flutter·harmonyos
爱勇宝2 分钟前
如何评价 Claude Fable 5 全球暂停访问?
人工智能·程序员
装不满的克莱因瓶3 分钟前
自然语言处理常见任务——从文本理解到生成式AI的完整任务体系
人工智能·pytorch·python·深度学习·ai·自然语言处理
朱大喜5 分钟前
AI 数据分析实战:大模型驱动的自动化报表生成,从数据到洞察的工程化链路
人工智能
ptc学习者7 分钟前
python 中描述符@property property 大概的样子
开发语言·python
zmzb01038 分钟前
Python课后习题训练记录Day129
开发语言·python
wb0430720116 分钟前
阿明的二次创业——从阿明用 AI 开第二家店,看 AI 原生创业的四阶段方法论
大数据·人工智能·架构
Godspeed Zhao16 分钟前
Level 4自动驾驶系统设计0——功能与场景0
人工智能·机器学习·自动驾驶
Dola_Zou19 分钟前
边缘智能的“黑暗森林”:工业 AI 模型下沉的资产防护与变现密码
人工智能·安全·自动化·软件工程·软件加密
青岛前景互联信息技术有限公司20 分钟前
前景互联·新一代智能接处警系统:AI+大模型+Agent智能接处警一体化解决方案
大数据·人工智能·物联网