专栏首页诡途的python路纯小白都能看懂的《单个神经元》、《随机梯度下降》、《逻辑与》

纯小白都能看懂的《单个神经元》、《随机梯度下降》、《逻辑与》

摘要

网上各种制造焦虑的软广《一文搞懂 / 学会 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() 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一文带你了解Python爬虫(二)——四种常见基础爬虫方法介绍

    –Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库 –urllib还是非常不方便的,而...

    诡途
  • python初学者笔记—关于 random 和 time 模块

    诡途
  • Message: session not created: This version of ChromeDriver only supports Chrome version 83

    一开始我还以为是 webdriver.Chrome() 原来的参数chrome_options被新的参数options替换了的原因

    诡途
  • 这款「沾花惹草」的小程序,帮你找回遗失的好奇心 | MINA 奖 #14

    家门口的大树、路边的花草,每天走着看着,只知道那是树,是花,是叶,却从来叫不出它们的名字,好像……也并不想要知道。

    知晓君
  • Linux常用命令 - 五种创建文件命令详解

    21篇测试必备的Linux常用命令,每天敲一篇,每次敲三遍,每月一循环,全都可记住!!

    小菠萝测试笔记
  • Apache IoTDB 系列教程-8:文件同步工具

    在官网用户手册的系统工具(System Tools)一栏,有一个同步工具(Sync Tool),有很多人问这个东西怎么用,延迟是多少,今天就介绍一下这个工具的使...

    Apache IoTDB
  • AI从入门到放弃:BP神经网络算法推导及代码实现笔记

    作为AI入门小白,参考了一些文章,想记点笔记加深印象,发出来是给有需求的童鞋学习共勉,大神轻拍!

    AI科技大本营
  • Git异常:fatal: V1.0 cannot be resolved to branch.

    GitHub实战系列汇总:http://www.cnblogs.com/dunitian/p/5038719.html ————————————————————...

    逸鹏
  • 【SAS Says】基础篇:读取数据(下)

    特别说明:本节【SAS Says】基础篇:读取数据(下),用的是数说君学习《The little SAS book》时的中文笔记,我们认为这是打基础的最好选择。...

    数说君
  • AI从入门到放弃:BP神经网络算法推导及代码实现笔记

    用户1737318

扫码关注云+社区

领取腾讯云代金券