当前位置: 首页 > news >正文

社交网站 模板logo设计

社交网站 模板,logo设计,怎样建设网站空间,南昌地宝网免费发布机器学习0-为什么Relu函数 文章目录 机器学习0-为什么Relu函数 [toc]1-手搓神经网络步骤总结2-为什么要用Relu函数3-进行L1正则化修改后的代码解释 4-进行L2正则化解释注意事项 5-Relu激活函数多有夸张1-细数Relu函数的5宗罪2-Relu函数5宗罪详述 6-那为什么要用这个Relu函数7-文…机器学习0-为什么Relu函数 文章目录 机器学习0-为什么Relu函数 [toc]1-手搓神经网络步骤总结2-为什么要用Relu函数3-进行L1正则化修改后的代码解释 4-进行L2正则化解释注意事项 5-Relu激活函数多有夸张1-细数Relu函数的5宗罪2-Relu函数5宗罪详述 6-那为什么要用这个Relu函数7-文本分类情感分析任务激活特征之间的关系常用的激活函数总结 8-专业词汇解释 1-手搓神经网络步骤总结 1基于【预测值和真实值】最小的差别使用最小二乘法计算误差值2如何求解【最小二乘法】的方法分别针对w和b进行求导计算方法叫做【梯度下降求解】-引入【迭代步数】【学习率】的概念3为了解决多个神经元的线性组合还是直线的问题进行非线性变换激活函数-引入ReLu等激活函数各取所长4OK至此已经完美的解决了【线性模型】【误差计算】【梯度求解】【非线性变化】的问题直接可以得到我们的模型了5但是这样的模型太过完美导致计算的数据可能针对【训练和验证数据】太过完美针对新数据预测不准-引入【L1/L2正则】 2-为什么要用Relu函数 为什么一个小学生都会的函数可以解决神经网络中的梯度问题 1神经网络是基于线性组合进行变换了就会导致所有的线性函数不论经过多少次变换都还是一个线性函数 2OK,现在引入【非线性环变换-Relu函数】那么怎么解释这几个问题 1多个Relu函数线性变换到底是个什么鬼-可以用python进行绘制【曲线】-OK,y值经过Relu(y)后再线性组合可以表示非线性问题2那为什么要用这个Relu函数貌似我随手写一个函数sin、cos、tan、cot甚至我手写一个只要不是直线的方程都可以实现【非线性变换】-答案【生物学启示】【计算效率】 诚实一点别说太多玄乎的东西就两个核心点【老板亲儿子-神经网络的生物学启示】【计算时偷懒-把负数置为0,这样就不用计算负数部分的运算(计算效率)】 其他【稀疏性】【缓解梯度消失问题】-先说【缓解梯度消失问题】只要斜率为0大家都会梯度消失sigmoid或tanh这样的饱和非线性函数斜率会变为0Relu函数在小于0时直接就全变为0直接躺平大家都梯度消失了所以这个接口太牵强了 再说【稀疏性】所谓的【稀疏性】说人话就是让部分参数不参与计算不激活实现这个方式也太简单了我可以选择跳过随机参数或者其他的方式都行所以这个接口也太牵强 3OK如果是【老板的儿子】当然是选择接纳他啦还能怎么办那Relu函数的主要负责什么场景这样我们遇到这些场景赶紧找Relu函数去大展拳脚秀一波肌肉-【线性特征场景(一半是线性)】【长文本的稀疏计算(数据置0保留核心)】【深度神经网络(数据置0计算简单)】 ReLU有一半是线性方程可以很好的学习到线性特征 因为简单在深度神经网络的计算中可以有效计算 文本分类和情感分析等任务中只有核心的要点关键字使用RelU可以剔除没有梯度变化的数据 4OK,【老板的儿子】再有本事也得找帮手进行互补有没有其他的激活函数也可以解决这些事情- 四大金刚Sigmoid、ReLU、Tanh 和 Leaky ReLU 其他激活函的场景https://mp.weixin.qq.com/s?__bizMzk0NDM4OTYyOQmid2247484448idx1snf5ae1d222067f7125cba799742ee17d3chksmc32428b2f453a1a43a99d88b060f1366dde591afa1ed78825a978e83a4bb3fe1eac922ddd217token142243382langzh_CN#rd 3-进行L1正则化 在你的代码中你已经实现了基本的梯度下降算法来拟合一个简单的线性模型并使用Sigmoid函数作为激活函数。为了防止过拟合你可以通过添加L1正则化来限制模型的复杂度。L1正则化通过在损失函数中添加模型参数的绝对值之和来实现。 下面是如何在你的代码中添加L1正则化的步骤 定义正则化项在损失函数中添加L1正则化项。修改梯度计算在计算梯度时考虑正则化项的影响。 修改后的代码 import numpy as np# 输入数据 x_data np.array([0, 1, 2, 3, 4]) y_data np.array([0, 2, 4, 6, 8])# 初始化参数 m 0 b 0# 超参数 learning_rate 0.01 epochs 1000 lambda_l1 0.01 # L1正则化系数# Sigmoid激活函数 def sigmoid(x):return 1 / (1 np.exp(-x))# Sigmoid的导数 def sigmoid_derivative(x):return sigmoid(x) * (1 - sigmoid(x))def compute_gradients(m, b, x, y, lambda_l1):N len(x)z m * x by_pred sigmoid(z) # 使用sigmoid作为激活函数error y_pred - ydL_dy_pred errordL_dz dL_dy_pred * sigmoid_derivative(z) # 使用sigmoid的导数# 计算L1正则化的梯度dm_l1 lambda_l1 * np.sign(m)db_l1 lambda_l1 * np.sign(b)# 计算总的梯度dm (2/N) * np.sum(dL_dz * x) dm_l1db (2/N) * np.sum(dL_dz) db_l1return dm, dbfor epoch in range(epochs):dm, db compute_gradients(m, b, x_data, y_data, lambda_l1)m m - learning_rate * dmb b - learning_rate * dbif epoch % 100 0:z m * x_data by_pred sigmoid(z) # 使用sigmoid作为激活函数进行预测loss np.mean((y_pred - y_data)**2) lambda_l1 * (abs(m) abs(b)) # 添加L1正则化项print(fEpoch {epoch}: m {m}, b {b}, loss {loss})print(fFinal equation: y {m} * x {b})解释 正则化系数 lambda_l1这是一个超参数控制L1正则化的强度。较大的值会导致模型参数更接近于零从而减少模型的复杂度。 正则化项的梯度在 compute_gradients 函数中我们添加了L1正则化的梯度 dm_l1 和 db_l1。L1正则化的梯度是参数的符号函数 np.sign(m) 和 np.sign(b) 乘以正则化系数 lambda_l1。 损失函数在计算损失时我们添加了L1正则化项 lambda_l1 * (abs(m) abs(b))这会使得模型参数的绝对值之和最小化。 通过这种方式L1正则化可以帮助模型避免过拟合尤其是在数据量较小或特征较多的情况下。 4-进行L2正则化 你的代码尝试使用梯度下降算法通过线性回归拟合线性数据并且使用了 Sigmoid 激活函数。然而对于线性数据使用 Sigmoid 激活函数并不是最佳选择因为它会将输出压缩到 0 和 1 之间这可能导致损失函数值很高且收敛缓慢。 另外你的代码中没有加入 L2 正则化来避免过拟合。为了在代码中添加 L2 正则化我们需要在损失函数中加入一个正则化项并在计算梯度时考虑这个项。L2 正则化项通常表示为参数的平方和乘以一个正则化系数 λ。 以下是修改后的代码加入了 L2 正则化 import numpy as np# 输入数据 x_data np.array([0, 1, 2, 3, 4]) y_data np.array([0, 2, 4, 6, 8])# 初始化参数 m 0 b 0# 超参数 learning_rate 0.01 epochs 1000 lambda_reg 0.1 # 正则化系数# Sigmoid激活函数 def sigmoid(x):return 1 / (1 np.exp(-x))# Sigmoid的导数 def sigmoid_derivative(x):return sigmoid(x) * (1 - sigmoid(x))def compute_gradients(m, b, x, y, lambda_reg):N len(x)z m * x by_pred sigmoid(z) # 使用sigmoid作为激活函数error y_pred - ydL_dy_pred errordL_dz dL_dy_pred * sigmoid_derivative(z) # 使用sigmoid的导数dm (2/N) * np.sum(dL_dz * x) (2 * lambda_reg * m / N) # 添加L2正则化项db (2/N) * np.sum(dL_dz) (2 * lambda_reg * b / N) # 添加L2正则化项return dm, dbfor epoch in range(epochs):dm, db compute_gradients(m, b, x_data, y_data, lambda_reg)m m - learning_rate * dmb b - learning_rate * dbif epoch % 100 0:z m * x_data by_pred sigmoid(z) # 使用sigmoid作为激活函数进行预测loss np.mean((y_pred - y_data)**2) (lambda_reg * (m**2 b**2) / N) # 添加L2正则化项print(fEpoch {epoch}: m {m}, b {b}, loss {loss})print(fFinal equation: y {m} * x {b})解释 L2 正则化项在 compute_gradients 函数中我们添加了 L2 正则化项 (2 * lambda_reg * m / N) 和 (2 * lambda_reg * b / N)分别对 m 和 b 的梯度进行正则化。损失函数在计算损失函数时我们也添加了 L2 正则化项 (lambda_reg * (m**2 b**2) / N)。 注意事项 正则化系数 λlambda_reg 是一个超参数需要通过交叉验证等方法来选择合适的值。数据线性对于线性数据使用线性激活函数如直接使用 z 而不是 sigmoid(z)可能会更合适这样可以避免 Sigmoid 的压缩效应。学习率学习率 learning_rate 也需要适当调整以确保模型能够收敛。 希望这些修改能帮助你更好地理解和应用 L2 正则化。 5-Relu激活函数多有夸张 Relu激活函数是一个初中生都可以随手写出来的一个函数看一下想法有多夸张【人有多么懒地有多大产】 1直接把带负值公式全部删除了啊啊啊啊啊啊啊。。。。 2直接把负值参数全部抹掉了是个什么概念我类比一下数学老师让我算题 -2x3y5 4x7y8 3x8y153我感觉负数不好看直接把第一个公式删掉了按照下面两个公式进行计算了。啊啊啊啊啊啊啊。。。。 4恐怖的不是我把这个公式删掉了恐怖的是整个AI圈都在用这个方法进行求解啊啊啊啊啊啊啊。。。。 1-细数Relu函数的5宗罪 1-引入非线性(解决线性组合的缺陷) 2-计算效率高强制把梯度设置为1和0-为0时把数据丢掉了 3-缓解梯度消失问题强制把梯度设置为1和0 4-稀疏激活强制把梯度设置为1和0 5-死亡ReLU问题强制把梯度设置为1和0 2-Relu函数5宗罪详述 引入非线性在神经网络中如果没有激活函数多层神经网络等价于单层神经网络因为线性变换的组合仍然是线性的。激活函数引入了非线性使得神经网络能够学习和表示复杂的函数关系。 计算效率高ReLU函数的计算非常简单只需要进行一次阈值操作即判断输入是否大于0。这在计算上比其他激活函数如sigmoid或tanh要高效得多因为它们涉及指数运算。 3缓解梯度消失问题在深度网络中使用sigmoid或tanh等饱和激活函数时容易出现梯度消失问题即在反向传播过程中梯度值会随着层的加深而指数级衰减导致网络训练困难。ReLU在x0区域的梯度恒为1因此可以缓解这个问题使得深层网络更容易训练。 稀疏激活ReLU函数会将所有负输入置零这会导致一部分神经元在某些情况下不被激活从而形成稀疏的激活模式。这种稀疏性有助于减少计算量并可能有助于特征学习。 5死亡ReLU问题尽管ReLU有很多优点但也存在一些问题。其中一个问题是“死亡ReLU”现象即当神经元的输入长期为负时其梯度为零权重不再更新神经元变得无效。为了解决这个问题一些变体如Leaky ReLU、PReLU和ELU被提出它们在x0时引入一个小的斜率以避免神经元死亡。 6-那为什么要用这个Relu函数 貌似我随手写一个函数sin、 cos、 tan、 cot甚至我手写一个只要不是直线的方程都可以实现【非线性变换】 确实许多函数都可以实现非线性变换包括sin、cos、tan、cot等。然而ReLURectified Linear Unit函数在深度学习中被广泛使用主要基于以下几个原因 计算效率ReLU函数非常简单其数学表达式为f(x) max(0, x)。这意味着在计算时只需要进行一个简单的比较和取最大值操作这比其他复杂的非线性函数如sin、cos等要快得多。 稀疏性ReLU函数会将所有负值置为0这有助于引入稀疏性。在神经网络中稀疏性通常被认为是一种有益的特性因为它可以帮助模型更好地泛化并减少过拟合的风险。同时这也使得网络更加高效因为许多神经元在某一时刻可能处于非激活状态输出为0从而节省了计算资源。 缓解梯度消失问题在深度神经网络中当使用像sigmoid或tanh这样的饱和非线性函数时梯度在反向传播过程中可能会逐渐消失导致网络难以训练。而ReLU函数在正数区域内的导数为1这意味着梯度可以顺畅地通过该层从而缓解了梯度消失的问题。 生物学启示ReLU函数在某种程度上模拟了生物神经元的激活方式。在生物学中神经元通常只在输入信号达到一定阈值时才会被激活。ReLU函数通过设定一个阈值在本例中为0实现了类似的行为。 当然ReLU函数也有其局限性例如“死亡ReLU”问题即当神经元在训练过程中一直处于非激活状态时其权重可能无法得到有效的更新。为了解决这个问题人们提出了一些ReLU的变种如Leaky ReLU、Parametric ReLU等。 总的来说尽管存在许多其他非线性函数可供选择但ReLU函数因其简单性、高效性和在深度学习中的良好表现而成为了一个流行的选择。 7-文本分类情感分析任务激活 在文本分类、情感分析等自然语言处理任务中特征之间的关系通常是通过神经网络模型来捕捉的。这些特征可以是词向量、词频、句子结构等而激活函数则在这些模型中起到关键作用帮助模型学习非线性关系从而更有效地进行分类或情感分析。 特征之间的关系 线性关系在某些简单的文本分类任务中特征之间的关系可能是线性的。例如词频特征可以直接用于线性回归或逻辑回归模型。非线性关系在更复杂的任务中特征之间的关系往往是非线性的。例如情感分析中词语的顺序、上下文关系等都需要通过非线性模型来捕捉。层次关系在深度学习模型中特征之间的关系通常是通过多层神经网络来捕捉的。每一层的输出都是对输入特征的更高层次的抽象表示。 常用的激活函数 ReLURectified Linear Unit 公式 f ( x ) max ⁡ ( 0 , x ) f(x) \max(0, x) f(x)max(0,x)优点计算简单避免了梯度消失问题广泛用于卷积神经网络CNN和全连接网络FCN。适用场景适用于大多数文本分类和情感分析任务尤其是在深层网络中。 Sigmoid 公式 f ( x ) 1 1 e − x f(x) \frac{1}{1 e^{-x}} f(x)1e−x1​优点输出范围在0到1之间常用于二分类问题。缺点容易出现梯度消失问题尤其是在深层网络中。适用场景适用于二分类的情感分析任务。 TanhHyperbolic Tangent 公式 f ( x ) tanh ⁡ ( x ) e x − e − x e x e − x f(x) \tanh(x) \frac{e^x - e^{-x}}{e^x e^{-x}} f(x)tanh(x)exe−xex−e−x​优点输出范围在-1到1之间相对于Sigmoid函数Tanh函数的梯度更大训练速度更快。缺点仍然存在梯度消失问题。适用场景适用于一些需要输出的特征值在一定范围内的场景。 Softmax 公式 f ( x i ) e x i ∑ j 1 n e x j f(x_i) \frac{e^{x_i}}{\sum_{j1}^{n} e^{x_j}} f(xi​)∑j1n​exj​exi​​优点用于多分类问题输出是一个概率分布所有类别的概率和为1。适用场景适用于多分类的文本分类和情感分析任务。 Leaky ReLU 公式 f ( x ) max ⁡ ( 0.01 x , x ) f(x) \max(0.01x, x) f(x)max(0.01x,x)优点在ReLU的基础上解决了“dying ReLU”问题即当输入为负时输出不再是0而是一个小于0的值。适用场景适用于需要处理负值特征的任务可以提升模型的泛化能力。 GELUGaussian Error Linear Unit 公式 f ( x ) x ⋅ Φ ( x ) f(x) x \cdot \Phi(x) f(x)x⋅Φ(x)其中 Φ ( x ) \Phi(x) Φ(x)是标准正态分布的累积分布函数。优点在Transformer模型中表现良好能够更好地处理复杂的非线性关系。适用场景适用于Transformer等复杂的深度学习模型。 总结 特征关系在文本分类和情感分析中特征之间通常是非线性关系需要通过激活函数来捕捉这些关系。激活函数常用的激活函数包括ReLU、Sigmoid、Tanh、Softmax、Leaky ReLU和GELU选择合适的激活函数可以显著提升模型的性能。 在实际应用中选择激活函数通常取决于任务的复杂度和模型的结构。对于简单的任务ReLU和Sigmoid可能已经足够而对于复杂的任务使用GELU等更复杂的激活函数可能会带来更好的效果。 8-专业词汇解释 计算效率ReLU函数非常简单其数学表达式为f(x) max(0, x)。这意味着在计算时只需要进行一个简单的比较和取最大值操作这比其他复杂的非线性函数如sin、cos等要快得多。 稀疏性ReLU函数会将所有负值置为0这有助于引入稀疏性。在神经网络中稀疏性通常被认为是一种有益的特性因为它可以帮助模型更好地泛化并减少过拟合的风险。同时这也使得网络更加高效因为许多神经元在某一时刻可能处于非激活状态输出为0从而节省了计算资源。 缓解梯度消失问题在深度神经网络中当使用像sigmoid或tanh这样的饱和非线性函数时梯度在反向传播过程中可能会逐渐消失导致网络难以训练。而ReLU函数在正数区域内的导数为1这意味着梯度可以顺畅地通过该层从而缓解了梯度消失的问题。 生物学启示ReLU函数在某种程度上模拟了生物神经元的激活方式。在生物学中神经元通常只在输入信号达到一定阈值时才会被激活。ReLU函数通过设定一个阈值在本例中为0实现了类似的行为。
http://www.hkea.cn/news/14475611/

相关文章:

  • 网站扫二维码怎么做的有个人做网站的吗
  • 网站制作公司前十名云核wordpress
  • 手机网站制作架构口碑好网站建设费用
  • 着力规范网站集约化建设品牌宣传策划方案
  • 知名网站有哪些wordpress config.php
  • 网站轮播广告代码wordpress文章列表高度
  • 网站定制牛七科技wordpress 4.7.3 乱码
  • 网站开发流程电话普通人做电商要多少钱
  • 公司的网站是什么行者seo
  • 视频网站的建设预算宁波市政务网站建设和管理标准
  • 网站需要数据库吗网站综合查询工具
  • 网站开发需求分析包括哪些方面网站开发的高级阶段包括什么
  • 襄阳做网站的公司陇南市建设局网站公示
  • 网站虚拟主机建设做网站代码用什么软件
  • google 网站优化工具做微信商城网站哪家好
  • 国家企业信用信息公示系统江苏南阳seo网站推广费用
  • 投票网站源码php云南云南省建设厅网站
  • 可以做微课ppt模板 网站有哪些内容php 文档系统wordpress
  • 自动搭建网站建设局属于哪个部门管
  • 国家重大建设项目库填报网站做个网站哪里可以做
  • 网站建设设计说明推广网站平台
  • 网站查询器怎样建设一个购物网站
  • 济南市住房和城乡建设局网站公益网站建设
  • 免费推广网站建设南京网站建站公司
  • 弱电工程公司网站怎么做泰安房产成交信息网
  • 温州做网站哪家好wordpress能改用户名吗
  • 广州企业网站设计公司tp5企业网站开发视频
  • 怎样做网站网站公司网站开发国内外现状
  • 建网站公司浩森宇特能免费做网站
  • 怎样在国外网站上做外贸广告泉州app制作