machine-learning - 为什么要在 CNN 卷积层中使用非线性激活函数?
问题描述
我正在参加麻省理工学院在 CNN 上的深度学习讲座之一。它说当将权重与像素值相乘时,可以对每个像素应用像 relu 这样的非线性激活函数。我理解为什么它应该应用于一个简单的神经网络,因为它在我们的输入数据中引入了非线性。但是我为什么要将它应用到单个像素上呢?还是我弄错了?
解决方案
你可能弄错了一点。
当他们说“将权重与像素值相乘”时 - 他们指的是将滤波器(权重 + 偏差)与图像的像素相乘的线性运算。如果你仔细想想,CNN 中的每个过滤器本质上都代表一个线性方程。
例如 - 如果我们正在查看一个 4*4 过滤器,该过滤器本质上是计算 x1 * w1 + x2 * w2 + x3 * w3 + x4 * w4 + b 它经过的图像的每个 4*4 补丁。(在上面的等式中,x1,x2,x4,x4 指的是图像的像素,而 w1,w2,w3,w4 指的是 CNN 滤波器中的权重)
现在,希望很清楚滤波器本质上是在计算线性方程。为了能够执行诸如图像分类之类的任务,我们需要一定程度的非线性。这是通过使用最流行的 ReLU 激活函数来实现的。
因此,您并没有将非线性应用于“像素”本身,而是将其应用于线性运算(例如在普通神经网络中) - 它由像素值乘以滤波器中的权重组成。
希望这可以消除您的疑问,请随时寻求更多帮助!
推荐阅读
- python - 在反向代理上修改 HTML
- java - 使用 cucumber、java 和页面对象的自动化
- spring - 重用 main 中的 application.properties 进行测试?
- python - 如何从每列中选择最常见的常见值
- postgresql - PostgreSQL——将“公历”日期转换为“波斯”日期??-- 在波斯历中显示日期时间戳
- javascript - 在JavaScript / node js中调用for循环内的异步函数
- python - Python Twitter API 从推文中提取多张图片
- python - 如何为给定场景绘制条形图?
- python - 我如何从 DM 频道中的 ctx.author 获取最后一条消息
- firebase - Firebase 存储规则:对允许的用户进行身份验证