课程地址:https://www.coursera.org/learn/neural-networks

老师主页:http://www.cs.toronto.edu/~hinton

备注:笔记内容和图片均参考老师课件。

这周介绍了Sigmoid Belief Networks,这里主要回顾下选择题。

对于一般的Sigmoid Belief Networks,网络及计算公式如下:

题目中的网络为

所以

$h_1,h_2$的概率是$\frac 1 2$是因为没有输入,由由于$h_1,h_2$没有连接,所以$h_1,h_2$独立,从而

选择题 2

import numpy as np

def prob(w1, w2, h1, h2):
    s = w1*h1 + w2*h2
    return 1/(1 + np.exp(-s))

w1 = -6.90675478
w2 = 0.40546511
p2 = prob(w1, w2, 0, 1)
p2
0.60000000045404056

选择题 3

p3 = p2*0.5*0.5
p3
0.15000000011351014

选择题 4

所以

p4 = (1 - p2)*0
p4
0.0

选择题 5

p5 = (1 - p2)*1
p5
0.39999999954595944

选择题 6

w1 = 10
w2 = -4
s1 = prob(w1, w2, 0, 1)
s2 = prob(w1, w2, 0, 0)
p6 = s1 / (s1 + s2)
p6
0.034723337448322934

选择题 7

s3 = prob(w1, w2, 1, 1)
s4 = prob(w1, w2, 1, 0)
p7 = s3/(s3 + s4)
p7
0.49939242873941264

最后回顾编程题11,参考资料

编程题 11

我们要计算的量是

对$-E (v,h)​$进行处理

最后一步左边一共有$2^m$项($v\in R^m$),右边是$m$个二项的乘积,对比之后可以发现两边相等,这样做的好处在于不需要计算$2^m$次,只要计算$m$项的乘积。

利用上式计算$Z$

对于此题来说,$n =10$,所以$v$一共有$2^n=2^{10}=1024$种状态,只要对$1024$项求和即可,里面的乘积项可以利用向量和矩阵的乘法快速计算出来。

备注:作业里面的small_test_rbm_w是我这里$W$的转置。