机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作ℓ1-norm和ℓ2-norm,中文称作L1正则化L2正则化,或者L1范数L2范数。L2范数也被称为权重衰减(weight decay)。

一般回归分析中回归ww表示特征的系数,从上式可以看到正则化项是对系数做了处理(限制)。L1正则化和L2正则化的说明如下:

  • L1正则化是指权值向量ww中各个元素的绝对值之和,通常表示为||w||1||w||1
  • L2正则化是指权值向量ww中各个元素的平方和然后再求平方根(可以看到Ridge回归的L2正则化项有平方符号),通常表示为||w||2

关于二者如何解决机器学习中过拟合问题,可以参考如下链接:

https://blog.csdn.net/weiyongle1996/article/details/78161512

https://blog.csdn.net/jinping_shi/article/details/52433975

tensorflow中提供了两个函数,用于求某个权重w矩阵的L1和L2正则化,下面是代码示例:

'''
输入:
x = [[1.0,2.0]]
w = [[1.0,2.0],[3,0,4.0]] 输出:
y = x*w = [[7.0,10.0]]
l1 = (1.0+2.0+3.0+4.0)*0.5 = 5.0
l2 = (1.0**2 + 2.0**2 + 3.0**2 + 4.0**2) / 2)*0.5 = 7.5
''' import tensorflow as tf
from tensorflow.contrib.layers import * w = tf.constant([[1.0,2.0],[3.0,4.0]])
x = tf.placeholder(dtype=tf.float32,shape=[None,2])
y = tf.matmul(x,w) with tf.Session() as sess:
init = tf.global_variables_initializer()
sess.run(init)
print(sess.run(y,feed_dict={x:[[1.0,2.0]]}))
print("=========================")
print(sess.run(l1_regularizer(scale=0.5)(w)))
#(1.0+2.0+3.0+4.0)*0.5 = 5.0
print("=========================")
print(sess.run(l2_regularizer(scale=0.5)(w)))
#(1.0**2 + 2.0**2 + 3.0**2 + 4.0**2) / 2)*0.5 = 7.5

最新文章

  1. 敏捷转型历程 - Sprint3 回顾会
  2. spring3.0使用annotation完全代替XML
  3. Function构造函数
  4. Ansible-Tower快速入门-5.导入许可【翻译】
  5. Android Task 相关
  6. -_-#setTimeout与setInterval
  7. hdu 4882 ZCC Loves Codefires(数学题+贪心)
  8. C#编程总结
  9. Selenium模拟JQuery滑动解锁
  10. temp-黄河农商行路径
  11. c 语言常量
  12. mac 开发新户攻略-brew
  13. .NET的前世今生与将来
  14. wps表格开发C#
  15. vue组件库(二):基于verdaccio工具npm私服搭建
  16. linux 下的emoji在MariaDB中的字符集修改
  17. InstallShield 2015 生成单个EXE包和 MSI包
  18. 学习笔记21—PS换图片背景
  19. vscode 学习笔记 —— 调试 (以 node 为例)
  20. eclipse 大括号 改为C语言风格

热门文章

  1. Python 学习笔记(九)Python元组和字典(三)
  2. Swift_ScrollView _ API详解
  3. 【HDOJ 1337】I Hate It(线段树维护区间最大值)
  4. Flask入门数据库的查询集与过滤器(十一)
  5. zabbix 3.x 监控日志文件
  6. linux 编译安装pureFTP
  7. 【MYSQL笔记】
  8. 第8章 ZooKeeper操作
  9. HyperLedger Fabric 1.4 简介(6.1)
  10. CSS-cascading stle sheets