纯小白都能看懂的《单个神经元》、《随机梯度下降》、《逻辑与》
时间:2022-07-26
本文章向大家介绍纯小白都能看懂的《单个神经元》、《随机梯度下降》、《逻辑与》,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
摘要
网上各种制造焦虑的软广《一文搞懂 / 学会 xxxx》 看的头大,但是这个专栏真的当的起一文搞懂神经网络 看完之后,就有种顿悟的感觉,我悟了 是我看过的把神经元讲的最清楚(没有之一) 虽然把链接放在文章开头会影响阅读, 但是我也不care了,强烈建议多遍阅读,先看大佬的文章 我这里,主要是相当于作为一篇笔记,或者读后感, 加深一下理解,并补充了部分自己的理解内容,做个记录 如果觉得有用,记得回来帮我点个赞
逻辑“与”介绍
高中数学知识:与(and)、或(or)、非(not)、异或
代码符号和关系解释
- 与 &:两个数都为1,结果才为1,否则为0
- 或 |:两个数中只要有一个为1,结果就为1,否则为0
- 非 !:数为0,结果为1,数为1,结果为0
- 异或 ^:两个数相同为0,不同为1
真命题与真命题,真命题;真命题与假命题,假命题; 真命题或真命题,真命题;真命题或假命题,真命题; 非真命题,假命题; 非假命题,真命题;
逻辑“与”的实验目标:
1&0 == 0 0&1 == 0 0&0 == 0 1&1 == 1
- 构建一个神经元根据上面四组数据自己学习到逻辑“与”规则
- 数据通项表示:x1&x2==y
数据整理
x1 |
x2 |
y |
---|---|---|
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
描点画图 将(x1,x2)视作一个坐标,将它描点在二维平面是这样的
问题转换成为二分类即: 我们让神经元能够学习到将(0,1)、(0,0)、(1,0)这些点分类为0,将(1,1)这个点分类为1。 更直观的讲就是神经元得是像图中的这条直线一样,将四个点划分成两类。 在直线左下是分类为0,直线右上分裂为1.
约定俗成
单个神经元
学计算机一个很重要的思维就是:任何一个系统都是由输入、输出、和处理组成。
什么叫神经元呢?
- 神经元在数学意义上就是一条直线(的函数表达式)
- 由输入、输出、和处理组成
- 有的地方说的感知机也是指的神经元
随机梯度下降
梯度下降三维图解
逻辑“与”代码实现
#面向对象的代码看不习惯,自己写了一遍函数定义的代码
import pandas as pd
"""
AND感知机实现
output =1 if weight1 * input1 + w2*input2 +bias >=0
output =0 if weight1 * input1 + w2*input2 +bias < 0
"""
#and为内置函数具有特殊意义,用and1表示
def and1():
# 1、定义权重和偏置项
weight1 = 0.8
weight2 = 1.2
bias = -1.3
# 2、定义输入和目标值(targets)
inputs = [(0, 0), (0, 1), (1, 0), (1, 1)]
targets = [False, False, False, True]
outputs = []
# 3、需要将输入和目标值 只用zip进行组合,然后一一遍历出来
for input, target in zip(inputs, targets):
# 4、做线性组合,并激活得到output(在3循环下面进行)
linear_combination = weight1 * input[0] + weight2 * input[1] + bias
# 阶跃函数激活
output = int(linear_combination > 0)
# 5、将输出output 追加到一个列表中(在3循环下面进行)
is_correct_string = "是" if output == target else "否"
# print(output, is_correct_string)
outputs.append([input[0], input[1], linear_combination, output, is_correct_string])
# 6、计算预测错误的个数-准确率
num_wrong = len([output[-1] for output in outputs if output[-1] == '否'])
# 7、可视化
output_frame = pd.DataFrame(
outputs, columns=['input1', 'input2', 'linear_combination', 'Activation output', 'is correct']
)
if not num_wrong:
print("恭喜你,全对了 n")
else:
print('你错了 {} 个'.format(num_wrong))
print(output_frame.to_string(index=False))
# 复杂非线性分类 ——增加感知器 ——not感知机 增加了一层隐藏层
if __name__ == '__main__':
and1()
- “AS3.0高级动画编程”学习:第四章 寻路(AStar/A星/A*)算法 (上)
- MongoDB副本(一主一备+仲裁)环境部署记录
- 根据前后的子串求中间串的函数
- Centos6下zookeeper集群部署记录
- 抓取百度指数引发的图像数字识别
- 真正将标注文字遮盖的方法
- “AS3.0高级动画编程”学习:第四章 寻路(AStar/A星/A*)算法 (中)
- li浮动时ul高度为0,解决ul自适应高度的几种方法
- 使用正则表达式求完整路径中的文件名
- “AS3.0高级动画编程”学习:第四章 寻路(AStar/A星/A*)算法 (下)
- Centos下SFTP双机高可用环境部署记录
- as3:Function以及call,apply
- centos6下redis cluster集群部署过程
- centos6下ActiveMQ+Zookeeper消息中间件集群部署记录
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python最简单的图片爬虫,20行代码带你爬遍整个网站
- 用Python把人物头像动漫化,不同的表情给你不同的惊喜
- python苦短-爬取音乐
- python苦短-灵笼说啥
- python爬虫-八佰词云
- python爬虫-beautifulsoup使用
- 深度学习-卷积神经网络原理
- 深度理论VGG-NET 网络
- 只要30行代码!7步教会你Python爬取网页抖音热门视频
- python苦短-CV2
- python实现语音在线合成,让你的小说自己念给你听
- Python爬虫实战:模拟登录淘宝网站
- Python制作动态二维码(附源码,复制再贴修改路径名字即可)
- 新手小白的福利,零基础也能上手的项目——学生信息管理系统
- Python制作小脚本,一键可以让你同事的电脑在你指定时间关机