GithubHelp home page GithubHelp logo

Comments (7)

Subranium avatar Subranium commented on August 15, 2024

对于线性二分类实现逻辑与或非门
问:为什么达到相同的精度,逻辑OR和NOR只用2000次左右的epoch,而逻辑AND和NAND却需要4000次以上?
答:因为逻辑OR和NOR的数据使得分类线在右上角就可以达到很好的效果,而逻辑AND和NAND在输入[0,0]时不满足要求,输入[0,1]和[1,0]时不满足要求,所以需要继续迭代,使得逻辑AND与NAND的训练次数更多。
如果我们将输入数据修改一下,修改为

X = np.array([1, 1, 1, 0, 0, 1, 0, 0]).reshape(4, 2)

那么逻辑OR和NOR就需要更多的迭代次数

`reader = LogicDataReader()
reader.Read_Logic_AND_Data()
train(reader, "Logic AND operator")

reader = LogicDataReader()
reader.Read_Logic_OR_Data()
train(reader, "Logic OR operator")`

输出的结果分别为:

AND 2266 3 0.0019996388444300725 W= [[-11.74577473] [-11.7458918 ]] B= [[5.41370439]] OR 4252 3 0.0019999280800343643 W= [[-11.76499604] [-11.76497315]] B= [[17.81587457]]

from ai-edu.

xiaowuhu avatar xiaowuhu commented on August 15, 2024

那么你有没有同时改标签值Y的顺序呢?比如对于Logic_AND_Data()来说,如果把X改成[1,1,1,0,0,1,0,0], 不改Y值的[0,0,0,1],则变成了NOR数据,那么迭代次数会少。
实际上,OR和NOR的分类线在左下角,AND和NAND的分类线在右上角,权重矩阵W的初始值都是0,从0到右上角的距离比到左下角的距离长,所以需要更多次的迭代。

from ai-edu.

Subranium avatar Subranium commented on August 15, 2024

对的 我这个例子举的不恰当了,其实不管改不改变数据的顺序,都应该是AND的次数更多,因为就像你说权重最初始的时候是0,所以分割线是从右上角逐渐往左下角运动的。
感谢指正

from ai-edu.

xiaowuhu avatar xiaowuhu commented on August 15, 2024

对的 我这个例子举的不恰当了,其实不管改不改变数据的顺序,都应该是AND的次数更多,因为就像你说权重最初始的时候是0,所以分割线是从右上角逐渐往左下角运动的。
感谢指正

还要感谢你能够静下心来仔细阅读教程,希望你能有所收获,继续提出宝贵意见!

from ai-edu.

fancy-mit-cse avatar fancy-mit-cse commented on August 15, 2024

【6.3 线性二分类原理】思考与练习
问:在推导公式5时,假设 $w_2 > 0$,这样做有什么问题吗?如果假设 $w_2<0$ 会是什么情况?
答:(1).假设 $w_2 &gt; 0$是因为示例中在直线上方的样本为正类 。(2).如果假设$w_2<0$,则在直线下方的样本为正类。

from ai-edu.

xiaowuhu avatar xiaowuhu commented on August 15, 2024

【6.3 线性二分类原理】思考与练习
问:在推导公式5时,假设 w2>0,这样做有什么问题吗?如果假设 w2<0 会是什么情况?
答:(1).假设 w2>0是因为示例中在直线上方的样本为正类 。(2).如果假设w2<0,则在直线下方的样本为正类。

correct!

from ai-edu.

zerokay avatar zerokay commented on August 15, 2024

那么你有没有同时改标签值Y的顺序呢?比如对于Logic_AND_Data()来说,如果把X改成[1,1,1,0,0,1,0,0], 不改Y值的[0,0,0,1],则变成了NOR数据,那么迭代次数会少。
实际上,OR和NOR的分类线在左下角,AND和NAND的分类线在右上角,权重矩阵W的初始值都是0,从0到右上角的距离比到左下角的距离长,所以需要更多次的迭代。

事实上并不是这样,虽然权重矩阵W的初始值都是0, 但是分类线并不是从左下角慢慢开始移动到右上角。

在训练的前几个epoch,神经网络其实已经可以正确分类,这一点可以通过观察损失值和画出分类线直观看到。后面的epoch其实一直在优化。

之所以逻辑OR和NOR只用2000次左右的epoch,而逻辑AND和NAND却需要4000次以上,是因为在同样的学习率的前提下,前者权重更新较大,下降较快,这一点通过损失函数图像也可以一窥究竟。

其实,逻辑OR和逻辑AND这是两个不同的问题,可以从它们的损失函数图像着手进行分析,它是关于w1, w2, b的函数。
当损失函数满足精度要求时,w1和w2基本相等。当假设w1=w2, 损失函数就是关于w1,b的二元函数,可以通过绘制三维图直观展示。
这是OR的损失函数图像,OR。可以看出比较陡峭,需要较少的迭代。
这是AND的图像,AND。比较平缓,需要更多的迭代。

from ai-edu.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.