用单层感知器完成逻辑或运算的学习过程

  • Post author:
  • Post category:其他




用单层感知器完成逻辑或运算的学习过程

这道题目是我“认知科学”(专业必修/doge)课程的结课作业题之一,目的在于加深对单层感知器的理解,对于后续学习神经网络打下基础。




有关知识:


B站有关视频


单层感知器的学习过程

比较简单

,其主要目的在于对给出值域进行一个线性划分。主要步骤为:

  1. 初始化连接权值和阈值(一般为为零的较小随机数);
  2. 取样本域中数据作为输入,在每一条输入边上进行加权求和,t表示迭代次数;





    i

    n

    p

    u

    t

    =

    i

    =

    1

    n

    w

    i

    (

    t

    )

    x

    i

    +

    b

    θ

    (

    t

    )

    input=\sum_{i=1}^n{w_i(t)x_i} + b\theta(t)






    i


    n


    p


    u


    t




    =

















    i


    =


    1


















    n





















    w










    i


















    (


    t


    )



    x










    i





















    +








    b


    θ


    (


    t


    )





  3. 将2中求和结果带入激活函数 f (在此取符号函数) 进行判断;





    o

    u

    t

    p

    u

    t

    =

    y

    =

    s

    e

    g

    (

    i

    n

    p

    u

    t

    )

    =

    {

    1

    i

    n

    p

    u

    t

    0

    0

    i

    n

    p

    u

    t

    <

    0

    output = y=seg(input) = \begin{cases} 1 & input\geq0\\ 0 & input<0 \end{cases}






    o


    u


    t


    p


    u


    t




    =








    y




    =








    s


    e


    g


    (


    i


    n


    p


    u


    t


    )




    =










    {














    1








    0



























    i


    n


    p


    u


    t









    0








    i


    n


    p


    u


    t




    <




    0

























  4. 如果输出值和期望值相同则取下一组数据,回到 2 ;否则根据如下规则进行调整,然后 t 加一,调整之后接着取下一组数据。





    {

    w

    i

    (

    t

    +

    1

    )

    =

    w

    i

    (

    t

    )

    +

    η

    (

    d

    y

    )

    x

    i

    θ

    (

    t

    +

    1

    )

    =

    θ

    (

    t

    )

    +

    η

    (

    d

    y

    )

    (

    1

    )

    \begin{cases} w_i(t+1)=w_i(t)+\eta(d-y)x_i \\ \theta(t+1)=\theta(t)+\eta(d-y)(-1) \end{cases}








    {















    w










    i


















    (


    t




    +




    1


    )




    =





    w










    i


















    (


    t


    )




    +




    η


    (


    d









    y


    )



    x










    i
























    θ


    (


    t




    +




    1


    )




    =




    θ


    (


    t


    )




    +




    η


    (


    d









    y


    )


    (





    1


    )

























  5. 直至样本域中所有数据输出值与期望值相同。

这里要注意的是,

i 表示输入数据的组内序号,不是第 i 组数据。




题目:假设w

1

(0)=0.2, w

2

(0)=0.4, θ(0)=0.3, η(0)=0.4, 请用单层感知器完成逻辑或运算的学习过程。

由题意可以构造下图的单层感知器,需要迭代求解出中分界线使得分界线可以分割值域。

根据逻辑或的关系可以得到下图的真值表。

  • 步骤1:取第①组输入值:x

    1

    =0, x

    2

    =0, 期望输出:d=0,实际上:y=f(w

    1

    (0)x

    1

    +w

    2

    (0)x

    2

    -θ(0))=f(-0.3)=0,与期望输出相同;
  • 步骤2:取第②组输入值:x

    1

    =0, x

    2

    =1, 期望输出:d=1,实际上:y=f(w

    1

    (0)x

    1

    +w

    2

    (0)x

    2

    -θ(0))=f(0.1)=1,与期望输出相同;
  • 步骤3:取第③组输入值:x

    1

    =1, x

    2

    =0, 期望输出:d=1,实际上:y=f(w

    1

    (0)x

    1

    +w

    2

    (0)x

    2

    -θ(0))=f(-0.1)=0,与期望输出不相同;

    • 调整:
    • θ(1)=θ(0)+η(d-y)*(-1)=-0.1;
    • w

      1

      (1)=w

      1

      (0)+η(d-y)x

      1

      =0.6;
    • w

      2

      (1)=w

      2

      (0)+η(d-y)x

      2

      =0.4;
  • 步骤4:取第④组输入值:x

    1

    =1, x

    2

    =1, 期望输出:d=1,实际上:y=f(w

    1

    (1)x

    1

    +w

    2

    (1)x

    2

    -θ(1))=f(1.1)=1,与期望输出相同;
  • 步骤5:取第①组输入值:x

    1

    =0, x

    2

    =0, 期望输出:d=0,实际上:y=f(w

    1

    (1)x

    1

    +w

    2

    (1)x

    2

    -θ(1))=f(0.1)=1,与期望输出不相同;

    • 调整:
    • θ(2)=θ(1)+η(d-y)*(-1)=0.3;
    • w

      1

      (2)= w

      1

      (1)+η(d-y)x

      1

      =0.6;
    • w

      2

      (2)= w

      2

      (1)+η(d-y)x

      2

      =0.4;
  • 步骤6:取第②组输入值:x

    1

    =0, x

    2

    =1, 期望输出:d=1,实际上:y=f(w

    1

    (2)x

    1

    +w

    2

    (2)x

    2

    -θ(2))=f(0.1)=1,与期望输出相同;
  • 步骤7:取第③组输入值:x

    1

    =1, x

    2

    =0, 期望输出:d=1,实际上:y=f(w

    1

    (2)x

    1

    +w

    2

    (2)x

    2

    -θ(2))=f(0.3)=1,与期望输出相同;
  • 步骤8:取第④组输入值:x

    1

    =1, x

    2

    =1, 期望输出:d=1,实际上:y=f(w

    1

    (2)x

    1

    +w

    2

    (2)x

    2

    -θ(2))=f(0.7)=1,与期望输出相同;
  • 步骤9:取第①组输入值:x

    1

    =0, x

    2

    =0, 期望输出:d=0,实际上:y=f(w

    1

    (2)x

    1

    +w

    2

    (2)x

    2

    -θ(2))=f(-0.3)=0,与期望输出相同。

由于步骤6~步骤9已经遍历了所有输入数据且实际输出结果均与期望输出相同,故可以结束迭代,此时阈值和连接权值以满足结束条件。

得到:w

1

=0.6, w

2

=0.4, θ=0.3

通过可视化也可以验证(如下图)



如有错误还望指出!



版权声明:本文为m0_46304383原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。