前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用Google Sheets搭建深度网络

用Google Sheets搭建深度网络

作者头像
AiTechYun
发布于 2019-11-18 02:12:29
发布于 2019-11-18 02:12:29
1.7K03
代码可运行
举报
文章被收录于专栏:ATYUN订阅号ATYUN订阅号
运行总次数:3
代码可运行

编辑 | sunlei 发布 | ATYUN订阅号

我想告诉你们,卷积神经网络并不像听起来那么可怕。我将通过展示我在google sheets中制作的一个实现来证明它。这里有一些可用的内容。复制它(使用左上角的file→make a copy选项),然后你可以尝试一下,看看不同的控制杆是如何影响模型的预测的。

本文的其余部分将是一个简短的介绍,以理解卷积神经网络(CNN)背后的高级直觉,然后是一些推荐的资源,以提供进一步的信息。

在继续之前,我想对FastAI大喊一声我最近完成了他们精彩的深度学习课程,所有的灵感和功劳都真正属于他们。优秀的讲师杰里米·霍华德和他的联合创始人雷切尔·托马斯向学生们展示了用Excel制作CNN的想法。但据我所知,电子表格无法在线使用,而且似乎也没有完全完成网络。我正在对他们的工作做一个小的扩展,并把它放在google sheets上,这样每个人都更容易使用。

我是怎么建造它的?

我在MNIST数据集上训练了一个(非常)简单的CNN,它是一堆手写数字的黑白图像。每张图片的分辨率为28×28像素。每个像素都表示为0(无墨水)到1(最大墨水)之间的数字。这是一个经典的数据集,因为它足够小,速度快,但真实到足以显示机器学习的复杂性。模型的任务是确定图像的编号。每个图像都是0-9中的一个数字。

来自MNIST的示例图像。28×28像素。注意:我在工作表中添加了条件格式,这样“墨水”越多的像素显示越红。

我用一个叫做Keras的流行深度学习库来训练模型(见这里的代码),然后把从模型中训练出来的权重放在表格里。训练过的权重只是数字。把它放在纸上,这意味着从我的模型复制并粘贴一堆数字到纸上。最后一步是添加公式来复制模型的功能,这只是常规的乘法和加法。让我重申一下:复制深度学习模型预测的数学止于乘法和加法[1]。

模型的每一层都有权重(也就是“参数”)。权重由任何机器学习模型自动学习。这个模型大约有1000个权重。更复杂的模型很容易拥有数亿个您可以在下面看到该模型的所有1000个权重:

何时使用卷积神经网络?

你使用CNN来发现序列数据中的模式,你非常肯定这些模式的存在,但是你发现很难把这些模式用文字表达出来,或者通过简单的规则来提取它们。CNN假定的顺序很重要。

例如,对图片进行分类是CNN的一个主要用例,因为这些像素在逻辑上是连续的,而且任何人都清楚有大量的模式。然而,只要试着用语言准确地说出猫和吉娃娃的区别,你就会明白为什么CNN是有用的。

另一方面,如果你有两支棒球队之间的最新数据,并且你想预测胜利者,那么CNN将是一个奇怪的选择。你所掌握的数据(如胜负数或球队击球平均数)并非天生的连续性。这里的顺序无关紧要,我们已经提取了我们认为有用的模式。所以CNN不会有帮助的。

CNN背后的直觉

为了理解这些怪兽,让我们把Deep Convolutional Neural Net分解成“深”、“卷积”和“神经网络”的组成部分。

卷积

想象一下你是盲人。但你的工作是找出这张手写图像的数字。你可以和看到图像的人交谈,但他们不知道数字是什么。所以你只能问他们简单的问题。你会怎么做?

你可以采取的一种方法是问这样的事情,“它主要是直接在顶部吗?”、“从右向左对角线?””等。有足够多的这样的问题,你可以很好地猜出它是7,或者2,或者别的什么。

直观地说,这就是卷积的作用。计算机是盲目的,所以它会做它能做的,并问很多小的模式问题。

方框1乘以方框2。把结果加起来,就得到第3框。这是个复杂的问题。

为了提出这些问题,图像中的每个像素都要经过一个函数(也就是“卷积”)来产生相应的像素,这个函数回答了其中一个小模式问题卷积使用滤波器来寻找模式。例如,请注意上面的过滤器(屏幕截图中的第2个)在右边是红色的,而在左边是红色的。这个过滤器基本上会寻找左边缘。

它为什么会找到左边缘可能不是很明显,但是试着使用电子表格,你就会看到数学是如何计算出来的。过滤器会找到看起来像它们自己的东西。CNN通常会使用数百个过滤器,所以你会为每个像素获得许多小的“分数”,有点像左边缘分数、上边缘分数、对角线分数、角分数等等。

好吧,所以询问边缘是很酷的,但是更复杂的形状呢?“这就是“深层”的多重层次的东西。因为现在我们有了图像的“左边缘”、“上边缘”和其他简单的“过滤器”,我们可以添加另一层,并对之前的所有过滤器运行卷积,然后合并它们!因此,将50/50 A的左边缘和上边缘组合起来,可以得到一个圆角的左角。很酷吧?

第二个卷积从上一个卷积层中提取相应的像素,并将每个像素乘以它自己的滤波器。和前面一样,我们对结果求和,这就为第二卷积层产生了一个新的对应像素。

严肃的CNN将有许多层,这使得模型可以建立越来越抽象和复杂的形状。即使只有4到5层,你的模型也可以开始寻找面孔、动物和各种有意义的形状。

神经网络

现在你可能会问自己,“那太好了,但是想出正确的过滤器听起来真的很乏味。”“最后呢我如何将这些过滤器中的所有答案组合成有用的东西?“。

首先,我们应该意识到,在高层次上,我们的CNN确实有两个“部分”。第一部分,卷积,为我们在图像数据中找到有用的特征。第二部分,电子表格末尾的“密集”层(之所以命名是因为每个神经元都有这么多的权重)为我们进行分类。一旦你有了这些特性,密集的图层和运行一系列线性回归并将它们组合成每个可能数字的分数并没有什么不同。最高分是模型的猜测。

矩阵1是卷积的输出。然后将矩阵1中的每个像素乘以矩阵2中的相应数字它的和是3。对绿色的方框再次重复这个过程。你会得到8个输出,或者用深度学习术语来说就是“神经元”。

为过滤器和最后的稠密层计算出所有合适的权重是非常烦人的。幸运的是,自动计算出这些权值是Neural Net的核心,所以我们不需要担心这个。但如果你好奇,你应该谷歌“反向传播”。

总结

每个CNN大概有两部分。卷积总是在开始时查找图像中有用的特征,而卷积的结尾通常被称为“密集层”,它根据这些特征对事物进行分类。

为了真正了解它们,我建议您使用spreadsheet。从头到尾跟踪一个像素。弄乱过滤器,看看会发生什么。我还在spreadsheet的注释中解释了更多的技术细节。

资源

要了解更多信息,我推荐以下资源:

交互式卷积-一个杀手交互式教程的卷积(即只是C部分,而不是NN部分),作者维克多鲍威尔。

对程序员的实际深入学习-从Fast.AI中学习的课程,我从中学到了很多,它是在线的,完全免费。

精彩的视频展示了CNN的基础知识——这是来自杰里米·霍华德(FastAI的创始人),这是一段20分钟的视频。这个非常棒的视频嵌入在那个页面中。从第21分钟开始看。

备注

[1]-训练CNN所需的数学包括微积分,因此它可以自动调整权重。但是一旦模型被训练,它实际上只需要乘法和加法来做预测在实践中,微积分是由你使用的任何深度学习库来处理的。

原文链接:

https://medium.com/@bwest87/building-a-deep-neural-net-in-google-sheets-49cdaf466da0

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ATYUN订阅号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PHP 中的几种主要加密方式原创
散列函数将数据转换成一个固定长度的字符串,这个过程是不可逆的。散列通常用于存储密码,以确保即使数据库被泄露,攻击者也无法轻易得到原始密码。
用户10819248
2024/09/29
2490
python3 rsa非对称加密与签名校验
本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/article/python-rsa/
羽翰尘
2019/11/20
2.5K0
PHP加密解密方法及常见问题解决方案(php对称加密和非对称加密示例)
php是一种流行的服务器端编程语言,广泛用于web应用程序开发中。在实际应用中,php加密解密是非常常见的操作。本文将介绍php中常见的加密解密方法,以及常见问题的解决方案。
超级小可爱
2024/02/24
1K0
PHP 使用非对称加密算法(RSA)
  以前一直对客户端传给服务器的信息加密这一块一脸懵,如果app里面的用户登录信息被抓包拿到了,大写着 username:root,password:123456,  那不是很尴尬。
Lansonli
2021/10/09
1.9K0
PHP 加密与解密
在现代 Web 应用中,数据安全是至关重要的,尤其是处理用户的敏感信息时,如密码、个人身份信息、信用卡号等。为了保护这些敏感数据不被黑客窃取或篡改,我们常常需要使用加密技术对数据进行保护。PHP 作为一种广泛使用的服务器端脚本语言,也提供了多种加密和解密的方法,帮助开发者实现数据的安全保护。
繁依Fanyi
2025/02/06
5390
NETCore.Encrypt:最全的加解密开源库
在软件开发中,数据安全和隐私保护是至关重要的。无论是用户信息、敏感数据还是通信内容,都需要通过加密技术来确保其安全性和完整性。对于 .NET 开发者来说,NETCore.Encrypt 是一个功能强大且易于使用的开源加密解密库,它提供了丰富的加密算法和简洁的 API,能够满足大多数开发场景中的安全需求。
郑子铭
2025/03/17
1420
NETCore.Encrypt:最全的加解密开源库
Java技术专题:「入门到精通系列」深入探索常用的六种加密技术和实现
随着信息安全的日益重要,加密技术在软件开发领域中扮演着关键的角色。Java作为一门广泛应用的编程语言,提供了丰富的加密库和API,使得开发者可以轻松实现各种加密算法。本文将深入探索Java技术中常用到的六种加密技术,包括对称加密、非对称加密、哈希算法、消息摘要、数字签名和数字证书,并通过具体的实现代码帮助读者更好地理解和应用这些加密技术。
IT_陈寒
2024/01/08
3650
Java技术专题:「入门到精通系列」深入探索常用的六种加密技术和实现
PHP OpenSSL扩展 – 对称加密
PHP 在进入7.x 时代后,默认就不再附带 mcrypt 扩展,mcrypt 将被 openssl_* 一族函数所替代。所以,对于 PHPer 来说,有必要学习一下 PHP 的 OpenSSL 扩展。
全栈程序员站长
2022/07/11
2.1K0
openssl安装与使用
可以通过源码安装也可以apt-get install安装,安装openssl之前先看一下自己是否安装有openssl
全栈程序员站长
2022/07/22
4.9K0
openssl安装与使用
PHP的openssl加密扩展使用小结
枕边书
2018/01/04
1.7K0
NodeJS模块研究 - crypto
这次研究下 nodejs 的 crypto 模块,它提供了各种各样加密算法的 API。这篇文章记录了常用加密算法的种类、特点、用途和代码实现。其中涉及算法较多,应用面较广,每类算法都有自己适用的场景。为了使行文流畅,列出了本文记录的几类常用算法:
心谭博客
2020/04/21
2.4K0
Go加密算法总结
它是一种数据编码方式,虽然是可逆的,但是它的编码方式是公开的,无所谓加密。本文也对Base64编码方式做了简要介绍。
iginkgo18
2020/12/22
1.7K0
基础入门-算法逆向&散列对称非对称&JS源码逆向&AES&DES&RSA&SHA
密文-有源码直接看源码分析算法(后端必须要有源码才能彻底知道) 密文-没有源码1、猜识别 2、看前端JS(加密逻辑是不是在前端) #算法加密-概念&分类&类型
没事就要多学习
2024/07/18
1810
基础入门-算法逆向&散列对称非对称&JS源码逆向&AES&DES&RSA&SHA
加解密算法分析与应用场景
在日常开发中,无论是使用何种编程语言,我们都会遇到加解密的需求。例如,为了保护接口数据安全,我们需要对数据进行加密传输;在HTTPS协议中,通过非对称加密传输客户端私钥,然后双方使用该私钥进行对称加密通信;使用MD5算法进行文件一致性校验等。然而,面对众多的加解密方案,我们往往不清楚何时使用哪种方法。本文将为您梳理当前主流的加解密技术,并对算法进行科普性说明,但不涉及具体算法分析。根据日常应用场景,加解密技术大致可分为以下四类:
不惑
2024/05/13
6320
加解密算法分析与应用场景
了解主流加密方式:离散、对称与非对称加密算法
尊敬的读者们,大家好!今天我将为大家介绍计算机加密领域中主流的加密方式,帮助您更好地理解加密算法。我们将重点探讨离散加密、对称加密以及非对称加密算法,并以Go语言为示例进行说明。让我们一起深入了解这些关键的加密技术!
运维开发王义杰
2023/08/10
4880
了解主流加密方式:离散、对称与非对称加密算法
Bouncy Castle :国密加密在.NET Core中的实践
Bouncy Castle 是一个开源的密码学库, 提供了丰富的加密算法实现,包括常见的对称加密算法(如 AES)、非对称加密算法(如 RSA、ECC)、哈希算法(如 SHA-256)以及数字签名算法(如 ECDSA)
郑子铭
2025/03/20
1930
Bouncy Castle :国密加密在.NET Core中的实践
Golang:加密解密算法
在项目开发过程中,当操作一些用户的隐私信息,诸如密码,帐户密钥等数据时,往往需要加密后可以在网上传输.这时,需要一些高效地,简单易用的加密算法加密数据,然后把加密后的数据存入数据库或进行其他操作;当需要读取数据时,把加密后的数据取出来,再通过算法解密.
OwenZhang
2021/12/08
1.8K0
Golang:加密解密算法
PHP的OpenSSL加密扩展学习(一):对称加密
我们已经学过不少 PHP 中加密扩展相关的内容了。而今天开始,我们要学习的则是重点中的重点,那就是 OpenSSL 加密扩展的使用。为什么说它是重点中的重点呢?一是 OpenSSL 是目前 PHP 甚至是整个开发圈中的数据加密事实标准,包括 HTTPS/SSL 在内的加密都是它的实际应用,二是 OpenSSL 提供了对称和非对称加密的形式,也就是我们日常中最普遍的两种加密方式,这都是我们需要掌握的内容。
硬核项目经理
2020/11/03
2.4K0
PHP的OpenSSL加密扩展学习(一):对称加密
哈希算法是对称算法还是非对称算法_对称加密和非对称加密原理
作用:对任意一组输入数据进行计算,得到一个固定长度的输出摘要。 哈希算法的目的:为了验证原始数据是否被篡改。 哈希算法最重要的特点就是: 相同的输入一定得到相同的输出; 不同的输入大概率得到不同的输出。
全栈程序员站长
2022/11/01
1.3K0
请看,常见的加密算法及详解都在这里!
加密算法,是现在每个软件项目里必须用到的内容。广泛应用在包括了用户登入、数字签名、数据传输等多个场合。那大家都知道那些呢?今天我把常见的加密算法全部整理在这里,供大家学习参考。
攻城狮的那点事
2019/12/10
1.5K0
推荐阅读
相关推荐
PHP 中的几种主要加密方式原创
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验