top of page
Rechercher

Advanced Learning Algorithms Week1

  • Photo du rédacteur: zoe zhao
    zoe zhao
  • 8 mars
  • 3 min de lecture

Introduced how neural network works and explained how the brain works

Actually we still don't know how the human brain works

even though the origins were biologically motivated, don't take the biological motivation too seriously, engineers are just using principles to figure out how to build algorithms that are more effective.

神经网络强大的一点是他不需要你给出hidden layer具体的类目,他会根据你的input layer 和output layer自己计算出来,可以理解为最原始的依据是逻辑回归


在人脸识别中第一层hiden layer可能在检测边缘,第二层变大一些检测器官轮廓 第三层再大一些变成面部整体,可以理解为是逐步变大feature的范围来计算的


每一层中的每一个神经元都会做一次逻辑回归的运算,得到一个output结果,而这个结果又在下一层中成为了input。传统说法中最原始的input不作为层,而output会作为一层




对于角标的理解,[]里面表示的是层数, 下角标的数字表示在这层里面是第几个神经元,所以解释填空题中的内容就是,第二层的a作为input输入进第三层,第三层里面的第一个神经元计算w1和b1,得到的公式是第三层的a1=g(w1*第二层的a+b1)




Example: handwritten digit recognition

从左到右进行的激活叫做forward propagation 每层神经元会越来越少

从右到左进行的激活叫做学习



Tensorflow的使用方法,以coffeeroasting的数据集为例,有温度和时长两个特征,要做的第一步是归一化数据,可以理解为统一数据尺寸、度量衡,通过缩放数据


第二部建立模型

随机播撒了种子

input的shape就是起始的feature个数,

dense就是一个layer,3表示神经元个数

计算变量的个数

起始的input有2个 所以在第一层3个神经元计算两个变量最后得到6个w 3个神经元自带的b

这里是随机初始化了每一个参数的值

获取到了每一个变量的值

然后把model汇编 计算loss 再去fit 这个后面week2 会详细讲


经过compile和fit之后,会给每一个wb重新赋值


接下来就可以做predict




使用Numpy手动编写dense()函数

先手动定义激活函数

g=sigmoid

神经元的数量和w的纵列数一样,所以=W.shape[1], W.shape[0]表示行数 既定的


然后使用np输出了一个全是0的,个数是神经元数的数组,取名a_out

遍历每一个神经元

取出第j个神经元的所有w

计算z

使用激活函数把值计算给a_out的第j列



定义sequential函数

得到最终的输出层


定义my_predict

m是数据集的行数,相当于数据的个数

p是一个有m行 1列的全是0的数组

遍历m,让每一行的第一列都记录经过my_sequential之后的数据

实际上p就只有一列


之后就可以使用这个函数来做预测了



讲到了大脑One learning algorithm的假说,给人脑为什么数据最终就能够学习到什么样的能力,给视觉信息就能学会看,给听觉信息就能学会听,所以AGI的诞生可能就差这唯一最高的算法的发现。


我在想人们是否所有时候都要看清事情的本质,当有了简化的路径的时候是否还需要再去看清复杂路径的全貌,以前好像很多人都会修车,修收音机,很多人从C语言开始学习编程,学手动挡驾驶,为的是搞清楚事务到底是怎么运作的,要说现代的人们真的理解信息和网络吗,真的知道在app上每一个操作背后具体发生了什么吗,鲜有人知。有些科学理论的发现和理解,随着普及用着用着就没了,实际上科学的本质在慢慢消失,如果没有历史和记录,文明实在是太脆弱了,就像历史上消亡了的部落、语言、文化,没有人能再去读懂。现代编程语言的library也是一样,人们习惯了调用API,留在大众视线里的也只不过是应用层面的技术。



说这么多我想表达的最终是,当今人们在探讨说AI不理解语言背后的含义,但他其实一直在用语言跟我们交流,人类的语言,各类的数据,其实他也不需要能够真的理解,能用就行了,科学其实是在削减具体内容来获得传播的,我们总以为AI不理解语言的含义,只是在计算,我们这种居高临下骄傲的以为掌握着真理的钥匙,实际上AI拿着锤子跃跃欲试根本不在乎怎么开锁。




使用 np.matmul进行矢量运算 简化 for loop



要先把A这个矩阵transpose,把列变成行,再去与w做乘积


np.matul 可以简化写成@


最终dense()的定义就可以简化成右边这样


这周的内容显示让你直接使用dense建立神经元 然后从底层的for loop 来定义dense、sequential 、predict 额外补充的使用矢量计算的方法定义dense 课程作业和考试内容是机器学习来判断手写数字是0还是1

 
 
 

Comments


  • Facebook
  • Twitter
  • LinkedIn

© 2022 par Ziyi Zhao.

bottom of page