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的训练过程其实就是不断的喂数据,然后通过目标函数的值来进行参数的调整,最终使目标函数趋于目标值的过程。

相关推荐
Raas1002 小时前
MAI Gateway(魔芋企业级AI网关)技术揭秘:AI网关支持哪些模型?从原理到落地
大数据·人工智能·网关·gateway·mai gateway·企业级产品
qq5918406854 小时前
uiautomator2自动化安卓手机操作
python
豪气的程序猿5 小时前
电商图片工作流怎么选?Lingko AI 对比折叠键盘主图与详情页
人工智能
80s7775 小时前
动态代理和静态代理的区别,动态代理怎么提高网络安全性
python
小刘快学习5 小时前
把 AI 账单拆到部门:企业 AI 网关的精准分账思路
人工智能
米小虾5 小时前
你让监控模型读的思维链,可能是攻击者写好的剧本
人工智能
deepseek235 小时前
Iris 开源搜索智能体拆解:35B 与 397B 中文仅差 0.3 分,上下文管理胜过堆参数
人工智能·ai agent·开源模型
ai小陈5 小时前
CUDA Stream实战:让数据传输与GPU计算真正重叠
人工智能·深度学习·ai·pdf·云计算·gpu算力
residual_fan5 小时前
【学术论文】航空发动机故障诊断智能体:基于持续对比强化学习的动态优化方法
人工智能·算法·数据挖掘·数据分析
东风破_5 小时前
从 RAG 到 Agentic RAG:第二步,把复杂问题拆开再检索
人工智能