【python与机器学习2】激活函数

目录

[1 什么是激活函数? activation function](#1 什么是激活函数? activation function)

[1.1 阈值](#1.1 阈值)

[1.2 激活函数a(x) ,包含偏置值θ](#1.2 激活函数a(x) ,包含偏置值θ)

[1.3 激活函数a(x) ,包含偏置值b](#1.3 激活函数a(x) ,包含偏置值b)

[2 激活函数1: 单位阶跃函数](#2 激活函数1: 单位阶跃函数)

[2.1 函数形式](#2.1 函数形式)

[2.2 函数图形](#2.2 函数图形)

[2.3 函数特点](#2.3 函数特点)

[2.4 代码实现这个 单位阶跃函数](#2.4 代码实现这个 单位阶跃函数)

[3 激活函数2 sigmoid函数](#3 激活函数2 sigmoid函数)

[3.1 函数形式](#3.1 函数形式)

[3.2 函数图形](#3.2 函数图形)

[3.3 函数特点](#3.3 函数特点)

[3.3.1 是一个连续函数,且是一个渐变的曲线](#3.3.1 是一个连续函数,且是一个渐变的曲线)

[3.3.2 是连续区间的0,1 , 可以天然等价视为概率!](#3.3.2 是连续区间的[0,1] , 可以天然等价视为概率!)

[3.3.3 计算方便,求导数方便,](#3.3.3 计算方便,求导数方便,)

[3.4 代码实现](#3.4 代码实现)

[3.4.1 sigmoid函数的实现,和 跃迁函数 对比](#3.4.1 sigmoid函数的实现,和 跃迁函数 对比)

[3.4.2 容易犯的错误](#3.4.2 容易犯的错误)

[3.4.3 标准函数代码写法](#3.4.3 标准函数代码写法)


1 什么是激活函数? activation function

一般是神经网络/ 感知机 用到的判断 神经元是否被激活的函数

1.1 阈值

  • 阈值判断
  • 阈值θ 太高神经容易被激活,很容易兴奋
  • 阈值θ 太低神经不容易被激活,不够敏感
  • if/当 w1x1+w2x2+w3x3+.....<θ 不能激活
  • if/当 w1x1+w2x2+w3x3+.....>=θ 才能激活
  • 因此 w1x1+w2x2+w3x3+.....=θ 时,就是刚好可以激活的阈值

1.2 激活函数a(x) ,包含偏置值θ

  • y=a(w1x1+w2x2+w3x3+.....-θ)
  • y=a(w,x,θ)
  • x 是输入的多个信息,w是每个信息的权重,θ是判断是否激活的阈值
  • a(x) 就是激活函数

1.3 激活函数a(x) ,包含偏置值b

  • y=a(w1x1+w2x2+w3x3+.....+b)
  • θ是判断是否激活的阈值 变成了偏置值b

2 激活函数1: 单位阶跃函数

2.1 函数形式

函数形式 y=f(x)

  • 可以说是 分段函数,或 阶跃函数/单位阶跃函数
  • f(x)=0, if x<0
  • f(x)=1, if x>=0

2.2 函数图形

  • 从图形上看,
  • 可以说是 分段函数
  • 或 阶跃函数/单位阶跃函数

2.3 函数特点

  • 设置函数的结果在0-1之间,
  • 天生的符合概率的0,1 设计
  • 一个最简单的函数,分段函数图形是直的,但是上下限也是0,1

2.4 代码实现这个 单位阶跃函数

python 复制代码
import numpy as np
import matplotlib.pyplot as plt

plt.figure()
X=np.linspace(-5,5,100)
Y=[]
for x in X:
    if x<0:
        y=-1
        Y.append(y)
    elif x>=0:
        y=1
        Y.append(y)
plt.plot(X,Y)
plt.show

3 激活函数2 sigmoid函数

sigmod函数比较经典

3.1 函数形式

  • sigmod函数形式,y=f(x)
  • f(x)=1/(1+e^(-x))
  • f(x)=1/(1+np.exp(-X)) #python内调用 numpy写法

3.2 函数图形

  • 函数图形是连续的
  • 函数的范围是0,1
  • 完全可以假设看作一种概率分布曲线pdf

3.3 函数特点

3.3.1 是一个连续函数,且是一个渐变的曲线

  • 一个比较连续的
  • sigmod函数图形是曲线

3.3.2 是连续区间的0,1 , 可以天然等价视为概率!

  • 上下限也是0,1
  • 并且在0,1 上是连续的,可以天然视为概率

3.3.3 计算方便,求导数方便,

  • 其中 (e^(-x))' = -e^(-x) ,可以通过复合函数求导推出
  • 为了不同情况下计算方便
  • 因为 e^(-x)' =
  • f(x)=1/(1+e^(-x))

3.4 代码实现

3.4.1 sigmoid函数的实现,和 跃迁函数 对比

python 复制代码
import numpy as np
import matplotlib.pyplot as plt

plt.figure()
X=np.linspace(-5,5,100)
Y=[]
y2=1/(1+np.exp(-X))  # 注意写法需要用数组X,用x是错的  y2=1/(1+np.exp(-x))
for x in X:
    if x<0:
        y=-1
        Y.append(y)
    elif x>=0:
        y=1
        Y.append(y)
plt.plot(X,Y)
plt.plot(X,y2)
plt.show

3.4.2 容易犯的错误

复制代码
ValueError: x and y must have same first dimension, but have shapes (100,) and (1,)
  • 因为 X是数组,维度是1,而x只是代表数组X里的某个变量,维度是100
  • y需要和X对应,而不能和x对应

3.4.3 标准函数代码写法

  • 先def sigmoid() 函数,return 1/(1+np.exp(-x))
  • 然后y 或者f(x)调用 sigmoid函数
python 复制代码
def sigmoid(x):
    return 1/(1+np.exp(-x))

plt.figure()
X=np.linspace(-10,10,100)
y2=sigmoid(X)
# y2=1/(1-np.exp(-x))  #这样不行


plt.plot(X,y2)
plt.show

激活函数2,另外一种

还有的函数,分段函数图形是直的,但是上下限也是-1,1

f(x)=1, if x>0

f(x)=-1, if x<=0

类似的例子比如

1/2Σi=1~n(Yi-f(x)i)^2 ,加上1/2 就是为了微分结果导数更简单

激活函数3

如果有2个输出结果,就不适合 感知机的模式了?

最原始的

最小二乘法

最小误差之和

相关推荐
深圳雨林凯AI17 分钟前
商品详情长图的自动生成:版块模板、要素抽取与版式约束的实现思路
人工智能·ai
lisw0520 分钟前
迁移学习(Transfer Learning):概念、历史、内容、挑战与展望
人工智能·机器学习·迁移学习
炫酷的大高个30 分钟前
98% 连跑 20 次只剩 67%,我算了大模型重试账
人工智能·架构·开源
可乐ea37 分钟前
智能体的模型列表为什么要从三处来源合成:一次让 GPT-6.1 Sol 选不上的发布延迟
人工智能·gpt·chatgpt·智能体框架·模型列表·多源数据合成·客户端工程
freewebsys44 分钟前
【原始POSTMAN】最老一个版本的postman 大家还记得吗?官方已经不支持没有升级了,下载了组件用AI直接升级了下可以使用了!
人工智能
云南新人和数采集团1 小时前
云南靠谱软件开发公司选型指南:以昆明新腾科技为例
大数据·人工智能·科技
发现你走远了2 小时前
05-权限不是开关:工具调用如何在放行、拦截与追问之间做决定
人工智能·agent·claude
AllData公司负责人2 小时前
AI大模型数据开发底座系列说明书:AllData集成DB-GPT开源项目建设 AI 多模态分析底座,涵盖模态解析/智能大屏/MCP 扩展!
大数据·数据库·人工智能·gpt·数据采集·数据接入·模态解析
syyjhchou3 小时前
自己搭企业内部中转站,怎么让请求更容易命中缓存
人工智能·后端·语言模型·aigc
张然Adolf4 小时前
人工智能电力系统应用新手实战指南
人工智能