tnblog
首页
视频
资源
登录

python 激活函数分类Logistic函数(学习笔记)

3210人阅读 2023/4/16 15:15 总访问:3467392 评论:0 收藏:0 手机
分类: AI

python 激活函数分类Logistic函数(学习笔记)

前言


有时候,我们对某个事物的判断不是1就是0。
举例:我们的吃馒头时一般看馒头多大的就能够判断吃得饱或吃不饱,而不是一个斜线的学习率。

人类思考的方式往往是离散的分类而不是精确的拟合。


假如小蓝的本身具有一定的抗毒性,比如最多能扛住0.8的毒性,只有超过0.8毒性的才算有毒,其他都算无毒。
如下图所示:


那么之前的神经元模型:y=wx + b。
显然不会很有效,我们更希望当有毒性大于某个阈值的时候为1(举例:大于0.8),小于某个阈值的时候为0。
像这样多一个判断的分断函数。


当然这个函数看着就不是很友好,我们可以的使用s型的Logistic函数来进行处理。

Logistic函数


公式如下图所示:


我们一般取标准的Logistic函数,L为1,k为1,y^0为0。也就是这样。


它这个函数很适合做判断,并且游很好的韧性。
当a得出z的Logistic函数的结果值时,曲线是不会受到的w值和b值的变化而改变的。


当a和x形成的曲线伴随着w和b取不同值的时候它们的曲线是会发生变化的。
而调整w和b的方式就是我们之前学的梯度下降算法。


我们可以通过求导进行梯度下降,然而事实是一个套着一个Sigmoid的函数很复杂,当然我们也可以取两个点来进行求导计算但也比较麻烦。

复合函数求导


复合函数求导的过程可以大大的简化我们计算的过程。举例:


e对w的求导恰好是e对h的求导乘以h对w的求导。

简单解析


把上面三个de、de、dh看出微分,下面是差值,而到目前为止我们一直在研究一阶导数。
一阶导数具有微分不变性。
所以第一个dh与第二个dh可以看成一样的可以进行约分,就变成了de除以dw,就是e对w的求导。


e=(y-wx)^2那么h=y-wx ,得出来就是2(y-wx)*(-x)=2x^2w-2xy


这种求导方式就像拨洋葱,从洋葱的最外层链到最内层,最终得到最外层因变量对最内层的自变量的导数,这就是复合函数的链式法则。


这里a对sigmoid函数z的求导的过程相当于:1/1+e^-y的求导,求出的导数为f(y)*(1-f(y))
代价函数对这种求导的方式就比较轻松了。


得出e对w和e对b的求导。然后进行梯度下降就很容易了。


激活函数是非线形的,主要处理越来越复杂的能力。

编程实践


修改豆豆的生成。

  1. import numpy as np
  2. def get_beans3(counts):
  3. xs = np.random.rand(counts)
  4. xs = np.sort(xs)
  5. ys = np.zeros(counts)
  6. for i in range(counts):
  7. x = xs[i]
  8. yi = 0.7*x+(0.5-np.random.rand())/50+0.5
  9. if yi > 0.8:
  10. ys[i] = 1
  11. return xs,ys


进行复合求导训练。

  1. import dataset
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. # 获取100个豆豆
  5. xs,ys = dataset.get_beans3(100)
  6. # 配置图像
  7. # 设置图像名称
  8. plt.title("Size-Toxicity Function",fontsize=12)
  9. # 设置横坐标的名字
  10. plt.xlabel("Bean Size")
  11. # 设置纵坐标的名字
  12. plt.ylabel("Toxicity")
  13. # 设置散点
  14. plt.scatter(xs,ys)
  15. # 设置w为0.1
  16. w = 0.1
  17. # 设置激活函数为0.1
  18. b = 0.1
  19. # 求sigmoid的导数
  20. z = w * xs + b
  21. # 求sigmoid的导数
  22. a = 1/(1+np.exp(-z))
  23. plt.plot(xs,a)
  24. plt.show()
  25. # 5000次学习
  26. for _ in range(5000):
  27. for i in range(100):
  28. # 获取散点的值
  29. x = xs[i]
  30. y = ys[i]
  31. # 对w和b求偏导
  32. z = w * x + b
  33. # 激活函数 np.exp 表示某数的平方
  34. a = 1/(1+np.exp(-z))
  35. # 方差代价函数
  36. e = (y - a)**2
  37. # 求导
  38. deda = -2*(y - a)
  39. dadz = a*(1-a)
  40. dzdw = x
  41. dzdb = 1
  42. # 再根据复合函数的链式法则得出dedw
  43. dedw = deda * dadz * dzdw
  44. dedb = deda * dadz * dzdb
  45. alpha = 0.05
  46. w = w - alpha * dedw
  47. b = b - alpha * dedb
  48. # 取余100为0时进行一次绘制这样看着不慢
  49. if _ % 100 == 0:
  50. plt.clf()
  51. plt.scatter(xs,ys)
  52. z = w * xs + b
  53. # 求导
  54. a = 1/(1+np.exp(-z))
  55. plt.plot(xs,a)
  56. plt.xlim(0,1)
  57. plt.ylim(0,1.2)
  58. # 暂停0.01秒,不暂停看不到绘制图
  59. plt.pause(0.01)


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

python学习 1-安装

Ptyhon非常简单易用的面向对象的脚本语言,跨平台 入门简单python分2个版本 Python2、Python3。Python 2.7 将于 2020 年结...

python学习 2-基本语法

基础:python脚本语言,不需要编译(像C#、Java、PHP、C++需要编译成机器可识别的语言), 而直接由解释器解释,很多地方类似...

python学习 3-爬虫基本介绍 及简单实例

爬虫爬虫就是一只猪,蜘蛛。。 网络蜘蛛。互联网是一个网由各个网站组成。无数的蜘蛛就在网上到处爬,根据网址从一个网站爬...

python实例 1-日志抓取处理 补错附日志小技巧

有时候数据出了问题,可以从日志中恢复数据(如果你没记日志..没备份..→_→..)一、日志展示介绍个平常自己用的小方法,如...

python实例 2-12306抢票(一) 登陆

开坑年关将近,终于对12306下手了,,平安夜撸代码,攻克了12306的登陆 2018-12-24 22:16:00没错 这篇博客就写从零开始的异...

python安装pip以及使用pip安装requests等模块

pip很简单的介绍pip 是一个现代的,通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。如果想...

python数据集合区别

列表(list):可读写,值可以重复,有序排列,初始化语法:['tom',‘jerry’]元组(tuple):只读,值可以重复,...

python实例 2-12306抢票(二) 下单

第二篇 刷票与下单1.记住登陆上一篇写了登陆:http://www.tnblog.net/cz/article/details/162 为了方便调试 不让每次登陆都...

使用VS Code开发python

Vs Code开发Python可以很好的支持代码调试、智能提示、代码对齐等1:下载VS Codehttps://code.visualstudio.com/Downloadvs ...

python变量与命名

Python使用等号 ( = ) 作为赋值运算符,例如a = 66 就是一条赋值语句,作用就是将66赋值给变量a。Python是弱类型语言,弱类...

python关键字和内置函数

Python中包含了如下所示的关键字:上面这些关键字都不能作为变量名。另外,Python 3还提供了如下表所示的内置函数:也不能...

python基础输入和输出

Python使用print()函数向打印程序输出,采用input()函数接收程序输入。print()函数的语法格式如下:print(value,...,sep=&#...

python基本数据类型

Python包含两大类基本数据类型:数值类型、字符串类型,三大类组合数据类型:集合类型、序列类型和字典类型.数值类型:整型...

python中通过fake_useragent生成随机UserAgent

fake_useragent第三方库,来实现随机请求头的设置;GitHub ---> https://github.com/hellysmile/fake-useragent安...

python 升级pip

一条命令即可: python -m pip install --upgrade pip 安装成功后,一般是在python目录下面的Scripts里边的

python html编码解码

使用方法:html.escape(s)与html.unescape即可 import html s="<div>jsdlfjsl</div>" #html编...
这一世以无限游戏为使命!
排名
2
文章
634
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术