提出问题
在计算Loss时,会达到172.287,337.246这样大的数值,一般Loss都应该小于1.
解决问题
标签值也归一化公式如下:
(1) y n e w = y − y m i n y m a x − y m i n = y − y m i n y r a n g e y_{new} = \frac{y-y_{min}}{y_{max}-y_{min}} = \frac{y-y_{min}}{y_{range}} \tag{1} ynew=ymax−yminy−ymin=yrangey−ymin(1)
将标签归一化之后进行训练其他操作保持不变,会得到非常小的W,B值:
w=0.01374991 -0.09151012 0.90392058
b=0.08233892
z=0.62474539
这样在预测时,z值也会非常小,只有0.62,一套房子不可能6000块钱,一平米都买不到。所以要把预测出来的值也要做反归一化。根据公式1:
(2)
y
=
y
n
e
w
∗
y
r
a
n
g
e
+
y
m
i
n
y = y_{new}*y_{range}+y_{min} \tag{2}
y=ynew∗yrange+ymin(2)
归一化和反归一化的关系
归一化 | Weight | Bias | 预测值Xt | 预测方法 |
---|---|---|---|---|
只归一化X | W n o r m W_{norm} Wnorm反归一化为 W r e a l W_{real} Wreal | W n o r m W_{norm} Wnorm反归一化为 B r e a l B_{real} Breal | 不归一化 X t Xt Xt | 用 W r e a l , B r e a l W_{real},B_{real} Wreal,Breal预测 |
只归一化Y | 使用训练结果 W n o r m W_{norm} Wnorm | 使用训练结果 B n o r m B_{norm} Bnorm | 归一化为 X t n o r m Xt_{norm} Xtnorm | 用 W n o r m , B n o r m W_{norm},B_{norm} Wnorm,Bnorm预测 |
同时归一化X和Y | 使用训练结果 W n o r m W_{norm} Wnorm | 使用训练结果 B n o r m B_{norm} Bnorm | 归一化为 X t n o r m Xt_{norm} Xtnorm | 用 W n o r m , B n o r m W_{norm},B_{norm} Wnorm,Bnorm预测,再反归一化结果 |
- X必须归一化,否则无法训练
- 训练出的结果W和B,在推理时有两种使用方式:
- a. 直接使用,此时必须把预测时输入的X也做相同规则的归一化
- b. 反归一化为W,B的本来值 W R e a l , B R e a l W_{Real},B_{Real} WReal,BReal,推理时输入的X不需要改动
- Y可以归一化,好处是迭代次数少。如果结果收敛,也可以不归一化,如果不收敛(数值过大),就必须归一化
- 如果Y归一化,先沿袭第2步的做法,对得出来的结果做关于Y的反归一化
标签值归一化 | 标签值不归一化 |
---|---|
Loss初始值只有0.04 | oss初始值达到4000 |
迭代次数1000次 | 迭代次数2000次 |
https://github.com/microsoft/ai-edu/blob/master/B-教学案例与实践/B6-神经网络基本原理简明教程/05.6-归一化标签值.md