发新帖

为什么要有w和b

[复制链接]
288 8

快来加入 TensorFlowers 大家庭!

您需要 登录 才可以下载或查看,没有帐号?加入社区

x
本帖最后由 ccuuiiccaann 于 2018-4-20 16:00 编辑

才开始学习tensorflow,各种教程、文档中只是说了如何使用,第一步怎么搞、第二步怎么搞......,但是根本就没讲“为什么要这么搞”、“这样搞的原理是什么”,比如权重W和偏置量b,都没有说为什么要有权重和偏置量、为什么是y=W*x+b,而不是y=log(x)或者别的......还有“激活函数”,sigmoid/tanh......只是讲这些函数的图像、优缺点,对于其作用的描述也仅仅是简单的“加入非线性元素”、“解决更复杂的问题”,对于为什么要激活函数、其原因、原理都不谈(是讲不清楚故意忽略避而不谈,还是不用说,默认大家都懂
本人初学,愿大神解惑,不胜感激。
我知道答案 回答被采纳将会获得10 金币 + 5 金币 已有8人回答
本楼点评(1) 收起
  • Tsingliutf只是作为一种工具来使用,工具的作用是告诉你如何用可以得到结果。
    楼主的很多疑问在于为什么要这样用?要理解这些问题是要有大量的数据理论和统计学理论作为支撑的
    有一本书《多元统计分析》,这是统计学的必备课程。在该书中有两个章节来讲解主成分分析和因子分析。这两种方法的核心思想就是在众多影响因变量的自变量中通过降维的方式找出主要的变量。
    在统计学中喜欢使用降维思想,这样方便计算。然而使用神经网络可以对全变量进行计算,并且优化最优解权重。
    对于理论基础相关的内容建议楼主可以了解一下统计学相关内容
    2018-5-18 16:13 回复

精彩评论13

tfBrother  TF荚荚  发表于 2018-4-20 18:37:47 | 显示全部楼层
首先w即为我们要训练的变量,对于mnist就是每个像素点在0~9这9个数字的权重,(例如某个像素点最终训练的w中对0的权重为0.5, 而此像素点本身灰度又为0.5,相乘得到的参数会变成这个像素点对于整张图片最后等于0的权重的贡献)。而b则是在既有权重基础上调整误差的参数,称为偏置。sigmoid函数的意思仅仅是<0的数变为=0, >0的数不变。

我说明一下,我只做了简单笼统的解释,但是我认为楼主的问题更多是和机器学习算法相关而非tensorflow。tensorflow只是我们用来实现机器学习算法的工具,因此tutorial里面对算法部分提及不多是很正常的,我建议您先仔细学习一下对应的机器学习算法以及原理,再看代码的时候就会有事半功倍的效果。
本楼点评(0) 收起
ccuuiiccaann  TF荚荚  发表于 2018-4-20 18:41:16 | 显示全部楼层
褚子昂@caicloud 发表于 2018-4-20 18:37
首先w即为我们要训练的变量,对于mnist就是每个像素点在0~9这9个数字的权重,(例如某个像素点最终训练的w ...

谢谢。谢谢给出的建议。我知道它们的用处,但是不知道为什么,所以先看看机器学习,希望疑惑能得到解答
本楼点评(0) 收起
舟3332  TF芽芽  发表于 2018-4-20 19:40:47 | 显示全部楼层
褚子昂@caicloud 发表于 2018-4-20 18:37
首先w即为我们要训练的变量,对于mnist就是每个像素点在0~9这9个数字的权重,(例如某个像素点最终训练的w ...

同意。

这个问题更多是一个 ML 的问题,而非 TF 的问题。

要详细的了解其中渊源,还要从头说起,我尝试长话短说一下,神经网络是从线性模型开始的。为什么是线性呢?因为他最简单。W 和 b 都是描述线性模型的参数。

但是光有线性模型还不够。把许多层线性模型堆叠在一起,还是一个线性模型,不能解决很多常见的问题,比如 XOR
       你可以试试为什么线性模型不能解决 XOR 的问题 :-)
所以就引入了 activation function 带入一些非线性的东西在里面,常见的比如 sigmoid, relu 等等。

本楼点评(1) 收起
  • tking赞同!y=wx b 和 激活函数是不同发展阶段的需要所产生的。可以用线性模型的,那表现会很好。但是有些问题、情境是线性模型所不能解决的。后来发现引入激活函数对于解决这种非线性问题很好,所以就有了激活函数
    2018-5-9 20:56 回复
王奇文  TF荚荚  发表于 2018-4-20 19:47:30 | 显示全部楼层
本帖最后由 王奇文 于 2018-4-20 20:23 编辑

学一门新技术,一开始就质疑。这习惯很好!为你点赞。
传统教科书确实有些问题,只灌输,不解释。比如线性代数,告诉你各种花样求解行列式,却不说行列式到底是什么鬼?

直到后来了解到是一种直观的空间变换的缩放率后,醍醐灌顶:“要是早点知道就不会挂科了”。
(详见三棕一蓝的线性代数科普,极力推荐,参考我的线性代数笔记:http://note.youdao.com/noteshare ... 49bd81a450c0a7490be

回到主题:
(1)为什么是y=W*x+b,而不是y=log(x)——想想主流的前馈神经网络,结构上体现为上一层的输入全部输出到下一层,把每层神经元串起来,就是天然的向量乘法:y=W*x+b,不是y=log(x),对吧?前馈神经网络是天然的线性运算(暂时不提激活函数),w和b自然就见怪不怪了

(2)为什么要激活函数?神经网络第一次兴起于多层感知器,只能做二分类,激活函数很简单,符号函数sign,异或问题都解决不了(MIT负责人minsky把神经网络拍死了),于是有了第一次寒潮。接下来发现加入非线性变换后,异或问题轻松求解,(理论上,两层的FCN能逼近任意函数)hinton重新发明了BP,神经网络再次兴起(随后败于SVM,接着第三次兴起,略)。总之,激活函数(非线性)是为了提升网络的表达能力

(3)为什么是sigmoid、tanh,而不是其他?刚开始,sigmoig由于本身的曲线美(s型)、处处连续、可导,数学上非常完美,备受推崇,tanh也是,区别是范围。其它的激活函数并不如此优美(如ReLU的0点不可导,log的无界,不可控),后来由于sigmoid的饱和特性(诱发梯度消失)而冷落,ReLU重新上位。总结:因本身数学特性+历史原因所致




本楼点评(1) 收起
  • jellycscactivation function 那块总结的不错,我再补充一下。sigmoid的饱和特性(诱发梯度消失)是指sigmoid函数两端趋平,斜率接近于0,这样的话也就是一阶导约等于0,所以在backprop的时候gradient signal无法传递到前一个neuron,所以就造成了梯度消失。
    再补充一点ReLU的优势:最简易的非线性函数。为什么这么说呢,因为大家都知道y=x把,ReLU就把负数部分hard threshold成0,这样几乎没有计算量,这和sigmoid以及tanh的复杂计算形成对比。ReLU没有梯度消失的问题,因为右侧趋于无穷大,斜率并不像sigmoid和tanh那样趋于0(根本原因是没有把无穷大或小挤压到一个更小的区间内)
    2018-4-21 07:33 回复
范文祥  TF荚荚  发表于 2018-5-4 17:50:56 来自手机  | 显示全部楼层
可以看一下,机器学习实战这本书,最好跟着编码,非常适合初学。这些概念看完了就会有初级的了解。
本楼点评(0) 收起
M丶Sulayman  TF豆豆  发表于 2018-5-4 20:53:23 | 显示全部楼层
我同意一楼的说法~
本楼点评(0) 收起
M丶Sulayman  TF豆豆  发表于 2018-5-4 20:53:58 | 显示全部楼层
范文祥 发表于 2018-5-4 17:50
可以看一下,机器学习实战这本书,最好跟着编码,非常适合初学。这些概念看完了就会有初级的了解。 ...

对,机器学习实战这本书讲得不错,网上代码也很多
本楼点评(1) 收起
  • yinboxu请问下各位前辈,你们说的“机器学习实战”具体是哪本书呢?作者和出版社分别是?因为现在机器学习实战相关的书籍确实好多。
    2018-5-18 10:05 回复
crayfish  TF荚荚  发表于 2018-5-5 13:52:25 | 显示全部楼层
理论基础是机器学习的内容,TF是个工具,其他的还有PyTorch之类的。

需要先看机器学习理论,学明白了,再用TF实现一下。
本楼点评(0) 收起
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

快速回复 返回顶部 返回列表