研究可以模拟大脑的算法。
语音、视觉、文本 (自然语言) ......
注:当下重点已不在生物层面,而是在利用工程原理构建更有效的算法。
神经网络将自己决定它将在隐藏层使用哪些数据
随着层数增加,窗口大小在增大。
【注】上标表示所在层数
每一层输入一组数字向量,并对应一组逻辑回归单元, 计算出另一组数字向量并传到另一层。直到得到最终的输出。
第 l 层激活的一般形式:
( g 也称为激活函数 —— 输出激活值的函数)
以区分手写数字 0 和 1 为例
计算第一层激活
计算第二层激活
计算最后一层激活 (输出)
(可选)???????
隐藏层的单元数量随着越来越接近输出层而在减少
由于历史原因,tensorflow 和 numpy 的数据表示方式冲突 —— t 为矩阵,n 为一维数组。
线性回归和逻辑回归通常用一维向量来表示数据,TensorFlow通常使用矩阵来表示。
tf.Tensor() 是由 TensorFlow 团队创建的数据类型,用于存储和执行矩阵上的运算 —— 即矩阵的一种表示方式
a1.numpy() 可将 tensor 转为 numpy 数组
Sequential() 函数可将不同层连接起来
model.fit(x,y) 表示在数据 x 和 y 上训练模型
model.predict(x_new) 表示在新数据上,用该神经网络模型进行推理
代码的深入理解见下一篇博客
以前面提到的 烘焙咖啡 为例:
???????
计算 a1 :
计算 a2 :
(该部分理解即可 —— 用于调试模型代码)
????????条件:???????
dense() 实现神经网络的单层:
输入:上一层的激活、神经元参数 w 和 b
输出:当前层的激活
def dense(a_in, W, b, g) : ?units = W.shape[1] #3 a_out = np.zeros (units) for j in range(units): #0,1,2 W= W[:,j] z = np.dot(w,a_in) + b[j] a_out [j] = g(z) return a_out
sequential() 将各层串联起来:
def sequential(x): a1 = dense(x, W1, b1) a2 = dense(a1, W2, b2) a3 = dense(a2, W3, b3) a4 = dense(a3, W4, b4) f_x = a4 return f_x
【注】python 中大写字母代表矩阵,小写字母指向量和标量
X = np.array([[200, 17]) W = np.array([[1, -3, 5], [-2, 4, -6]]) B = np.array([[-1, 1, 2]]) ? def dense(A_in, W, B) : Z = np.matmul(A_in, W) + B A_out = g(z) return A_out
E.g.: smart speaker, self-driving car, web search, Al in farming and factories....
做任何人类可以做的事情
模拟的神经元十分简单,与生物神经元有大的差距
我们至今仍未知道大脑如何工作
动物实验:仅给定输入,小部分的组织边可学会听、说、写(如感觉细胞可学会看)
也许一种算法给定数据输入,就可以学会处理