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

相关推荐
Elastic 中国社区官方博客4 分钟前
搜索倍增器:推动收入、生产力和 AI 实现规模化
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
wjkjpcba17 分钟前
机器人控制板PCBA怎么加工?从SMT贴片到BGA焊接解析机器人电子制造工艺
大数据·人工智能
青 春 记 忆32 分钟前
Dify Docker Compose 通用无损升级指南:从备份、双版本预演到切换与回滚
运维·人工智能·python·docker·容器
GlueNa2SiO333 分钟前
03-Flask模板引擎Jinja2详解
笔记·python·flask
小猪妈咪爱学法36 分钟前
欧盟最新发布《AI数字综合法案(Digital Omnibus‑on‑AI,AI综合修订法案)
人工智能·网络安全
ZGIAI39 分钟前
ZGI Workflow 变量池:接住节点输出
人工智能·架构
梵构广告43 分钟前
提升品牌识别度有哪些方法?
人工智能
ZGIAI1 小时前
ZGI 记忆隔离:多人共用不串号
人工智能·架构
星栈独行2 小时前
决定 Agent 交付下限的「操作系统」:Harness 六层架构拆解
人工智能·架构
AKAMAI2 小时前
实时可观测性:Akamai Cloud Pulse 警报功能正式发布
人工智能·云计算