技术控

    今日:98| 主题:49390
收藏本版 (1)
最新软件应用技术尽在掌握

[其他] 神经网络与深度学习笔记(一)

[复制链接]
伴我╮別絆我 发表于 2016-10-4 16:15:02
151 7

立即注册CoLaBug.com会员,免费获得投稿人的专业资料,享用更多功能,玩转个人品牌!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
神经网络与深度学习笔记(一)

   深度学习(Deep learning) 是现在很火的技术,对我来说不过就是个工具而已,就像Spring,Nginx 这些东西一样。这个系列的文章,会从公式,代码,原理等层面记录,但很基础的东西不会详细解释。
  Perceptrons

  简介

   Nature Net Work(神经网络) 是多个Perceptrons(神经元或感知机)某种方式的组合。Perceptrons 的结构如下图:
神经网络与深度学习笔记(一)-1 (function,learning,神经元,文章,网络)
可以用数学公式表示:
  [code]math
\displaystyle
output=f(WX+b)[/code]  {1},x {2},x  {3})^T$$ 权重向量:$$W=(w 1, w  2, w  3)$$ bias : $$b$$
  此处的函数$$f$$有很多,比step function,Sigmoid function, Softmax function . Relu(Rectified Linear Units),tanh......应该还有很多,各有各的特色,在很多神经网络的Library 里面都能找到这些function 的实现。
  上面这简单感知机,其实在实际生产的时候也是有效的,因为实现简单,而且在此基础之上还可以有些变化,来优化感知机。下面选用Sigmod 继续解释,因为Sigmod 用的比较多,很多公式我直接超就好了......。
  实现

  下面打算实现一个Perceptrons 分类器。实现的意思就是寻找上面模型中的参数$$W$$ 和$$b$$ 。当给定一堆样本的时候该如何才能得到需要的参数。在在寻找Perceptrons 参数的时候我们需要定义什么样的参数才是最好的参数。有了这个定义,才能进一步实施,机器学习的通用思想就是把问题转化成求解误差函数的最小值(这里不详细展开)。通常就是定义一个误差函数比如使用常用的二次函数:
  [code]math
E = \sum(1/2)(target-predit)^2[/code]  Gradient descent(梯度下降)  算法来实现。
  那么问题来了什么是梯度下降算法,如果你一时搞不清楚其中的原理(推导过程)你可以先使用最中的结果来实现一些,然后如果有兴趣再去研究。
  代码

   使用下面的代码,可以直观的看到,一个效果

神经网络与深度学习笔记(一)-2 (function,learning,神经元,文章,网络)

  ```
   class Perceptron(object): def init (self): # 感知机权重 self.weights = [] # 偏置 self.b = 0
  [code]def predict(self, x):
    z = sum(w * x for w, x in zip(self.weights, x)) + self.b
    # 此处本来是有激活函数的,鉴于此处是线性的,就直接使用借阅函数了
    a = z
    if a >= 0:
        return 1
    else:
        return -1

def train(self, inputs, iterations, rate=0.1):
    """

    :param inputs:  输入数据
    :param iterations:  迭代次数
    :param rate:  学习速率
    """
    self.weights = [0] * len(inputs[0][0])

    for iter in xrange(iterations):
        for X, Y in inputs:

            z = sum([w * x for w, x in zip(self.weights, X)]) + self.b
            a = z
            error = Y - a
            if Y * a <= 0:
                delta_list = [error * float(x) for x in X]
                self.weights = [w + rate * delta for w, delta in zip(self.weights, delta_list)]
                self.b += rate * delta

        right_count = 0
        for X, Y in inputs:
            pre_y = self.predict(X)
            if pre_y == Y:
                right_count += 1
        print "iter {}: {} /{}".format(iter, right_count, len(inputs))[/code]   if name == ' main ': from pylab import rand, norm import matplotlib.pyplot as plt # 产生输入数据 n = 100 xb = (rand(n) * 2 - 1) / 2 - 0.5 yb = (rand(n) * 2 - 1) / 2 + 0.5 xr = (rand(n) * 2 - 1) / 2 + 0.5 yr = (rand(n) * 2 - 1) / 2 - 0.5
  [code]inputs = []
for i in range(len(xb)):
    inputs.append([[xb, yb], 1])
    inputs.append([[xr, yr], -1])

#  train
classfication = Perceptron()
classfication.train(inputs, 100)

# 可视化
plt.figure()
plt.plot(xb, yb, 'ro')
plt.plot(xr, yr, 'bo')

n = norm(classfication.weights)
ww = classfication.weights / n
ww1 = [ww[1], -ww[0]]
ww2 = [-ww[1], ww[0]]
plt.plot([ww1[0], ww2[0]], [ww1[1], ww2[1]], '--k')
plt.show()[/code]  ```
  理解上面的代码的关键在于梯度下降算法,对应到代码里,下面这两句。
  [code]
delta_list = [error * float(x) for x in X]
self.weights = [w + rate * delta for w, delta in zip(self.weights, delta_list)]
self.b += rate * delta[/code]
友荐云推荐




上一篇:Create a Trello Clone using Angular, Node.js, Mongo, and Express
下一篇:10月4日-每日安全知识热点
酷辣虫提示酷辣虫禁止发表任何与中华人民共和国法律有抵触的内容!所有内容由用户发布,并不代表酷辣虫的观点,酷辣虫无法对用户发布内容真实性提供任何的保证,请自行验证并承担风险与后果。如您有版权、违规等问题,请通过"联系我们"或"违规举报"告知我们处理。

霍冉 发表于 2016-10-4 18:38:48
围观 围观 沙发在哪里!!!
回复 支持 反对

使用道具 举报

冯佩佩 发表于 2016-10-12 16:02:46
谁对我的感情能像对人民币那样的坚定啊?
回复 支持 反对

使用道具 举报

6246 发表于 2016-10-14 13:10:00
6246和小伙伴们都惊呆了
回复 支持 反对

使用道具 举报

等假期 发表于 2016-10-14 18:11:00
我也顶起沙发位
回复 支持 反对

使用道具 举报

车小强 发表于 2016-11-6 19:57:56
车小强要成为整个酷辣虫最为脸熟之人!
回复 支持 反对

使用道具 举报

宁国某人 发表于 2016-11-8 15:57:36
我是个哑巴,平时说话都是伪装的。
回复 支持 反对

使用道具 举报

Nathanbomy 发表于 2016-11-20 17:24:39
我是Nathanbomy,我是虫子
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

我要投稿

推荐阅读

扫码访问 @iTTTTT瑞翔 的微博
回页顶回复上一篇下一篇回列表手机版
手机版/CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 )|网站地图 酷辣虫

© 2001-2016 Comsenz Inc. Design: Dean. DiscuzFans.

返回顶部 返回列表