BP算法摘要与代码分析

  反向传播算法是神经网络中的重要组成部分,是对权重和偏置变化影响代价函数过程的理解,目标是计算代价函数C 分别关于w 和b的偏导数,从而更新w、b,影响前向过程,最小化代价函数。
  神经网络结构示意图
  BP算法的4个方程
  公式BP1与BP2在nielsen的书Neural Networks and Deep Learning中已有证明,下面补充BP3与BP4的证明:
  BP3 and BP4 Proof
  BP算法过程如下:
  BP算法过程
  在m大小的mini_batch内进行一次梯度更新,过程如下:
  mini_batch内的一次梯度更新   
  
  以mnist识别,三层网络[784,30,10]为例,nielsen的书中代码如下,添加了部分注释:

阅读更多

Deep Dream 初体验 - 神经网络模型眼中的世界

  2015年年中Google发布了Deep Dream的新闻,展示了google神经网络模型对输入图片的理解,类似于“深度盗梦”,并引发了后续的艺术风格作画。
  Deep Dream,其原理并不是尽可能地去正确识别图片对象,而是在网络识别对象模式的中间过程时,忽略确认操作,这样就解除了最小梯度限制,Test loss不再越来越小;而是让网络在已识别出的错误对象上,继续去强化认知和理解,最终找出了新图像的模板,而这迥异于原图的风格,形成了类似于创造梦境的效果。
  Google的示例如下:
  google deep dream example 1
  google deep dream example 2 - 原图
  google deep dream example 2 - 转换图
  google deep dream example 3 - 原图
  google deep dream example 3 - 转换图   

阅读更多

机器学习相关的Awesome系列

原文链接:[原创]机器学习相关的Awesome系列

阅读更多

Tensorflow Neural Network初体验 - 让电脑自己学习艺术风格去处理图片

  最近俄国的一款APP比较火,名叫Prisma,利用人工神经网络技术,可以学习名画艺术风格,对我们的照片进行艺术化处理。
  好奇心起,了解了一下其原理,简单说即学习一副画的风格,并将这幅画的风格应用到另一幅图片上。那我们完全可以利用Tensorflow Neural Network功能,来实现类似Prisma的功能,可以自定义诸多参数,比如多幅画的混合风格,不同权重,学习率等,来任意定制我们想要的绘画风格,取得比Prisma更灵活的效果。
  利用神经网络进行人工智能绘画,起源于2015年9月的一篇论文”A Neural Algorithm of Artistic Style”,如下图显示不同风格的处理效果。
  A Neural Algorithm of Artistic Style
  代码参考anishathalye/neural-style,基于Tensorflow CNN工具包和VGG模型。VGG做为常用的几种模型结构,与AlexNet类似,如下图示意:
  VGG model
  转换图片风格命令如下:
python neural_style.py --content <content file> --styles <style file> --output <output file>

阅读更多

MySQL Connection not available的定位

  Python在读写远程MySql数据库时,在数据量略大时(约4000条),总是运行一段时间后,过程中出现:OperationalError: MySQL Connection not available,查看代码与cursor = conn.cursor()有关。
  网上查了些资料,与MySql的固有bug有关(http://bugs.mysql.com/bug.php?id=67649):

阅读更多

爬取链家房屋信息-网络爬虫初体验demo

  链家APP以前可以查看房屋的价格变动信息,但新版本后取消了该功能,这样便不利于了解该房源的情况,比如某些房源一路调价3个月仍没卖出,要么不诚心卖,要么有各种问题。
  那么对于想购房的同学,有了目标区域重点关注的房源,如何能够获知其价格变动信息呢?很容易想到,自己轮个爬虫,每天自动爬一次,把房屋信息爬下后存起来,然后展示出来。
  主要的设计思路为:
1、 页面的爬取,house info的获取,主要涉及beautifulsoup库的使用;仅爬取指定的若干小区。
2、 信息存取:使用MySql数据库,数据库名称lianjiaHouse,包含两张表,两张表通过houseid进行关联:
  a) houseinfo,保存房屋基本信息,字段包括 价格、朝向、小区、户型、年代、税费等;
  b) hisprice,保存每天价格信息,字段包括日期、价格等;
3、 信息的更新,包括:
  a) new house的加入:当前爬取的houseid,数据库中没有,则插入记录。 validflag 标记为1,validdate标记为当前日期。并插入hisprice表
  b) old house失效:每次爬取前,首先将数据库中所有validflag标记为0;若当前爬取的houseid,数据库中有,则validflag 标记为1,validdate标记为当前日期,并更新价格信息;若为同一日期,则覆盖更新价格。这样若非当前爬取的houseid,数据库中保留validflag =0,validdate为最后有效日期,价格信息也仅更新到最后有效日期。
4、 信息展示
  a) 前端页面,输入指定小区,可展示所有房源信息和价格变动情况。
5、 信息触发发送用户
  当有新上房源或者价格变动时,可触发邮件或短信给用户。   

阅读更多

推荐系统简介之一(itemCF算法)

推荐系统简介之一(itemCF算法)
  习惯了今日头条、网易云音乐的推荐,对其背后的推荐原理产生了兴趣,大致了解了一下,主要利用用户上下文信息,比如注册信息、社交好友、时间地点、用户行为(购买、浏览记录等),来进行相关的分析。
  目前比较流行的推荐算法有userCF、itemCF、SVD++等。
  对于电商类网站,基于物品的协同过滤(item-based collaborative filtering)算法是目前业界应用最多的算法,如Amazon等。
  itemCF思想:给用户推荐那些和他们之前喜欢的物品相似的物品。
  (1) 计算物品之间的相似度。
  (2) 根据物品的相似度和用户的历史行为给用户生成推荐列表。
  
  itemCF算法具体过程:
  1、构建M*N矩阵,N为用户数,M为item数,矩阵中数值rji表示用户i对item j的打分项。
  2、计算item i与item j的相似度,可以采用余弦相似度进行计算。
  余弦相似度定义
  为增强数值范围的健壮性,通常对每个item的N个user的打分值进行归一化,即每个user的打分值减去该item项的平均打分值。
  为避免未打分的user与item项影响,通常仅取矩阵中的item i与item j的公共用户的打分值进行相似度计算。
  相似度计算时,矩阵中打分数据通常并不进行归一化操作,如下面代码所示,而是直接计算,这时公式需要变形为下式:
  代码中余弦相似度的计算
  3、对用户x的待预测各item i,预测打分值,打分值按照最相似的topN个物品的加权打分和进行计算:
  预测值计算
  top N可以固定参数N,也可以设置门限,仅取相似度高于门限的参与计算。用movielens 100w数据集测试,N=10左右有较好效果。
  这样就完成了预测,从而可以将预测打分值高于门限的item项推荐展示给用户。
  
  下面代码来自于justdark/dml,添加了部分注释.

阅读更多

Tensorflow Playground 初体验

  Tensorflow Playground是Google开源的一个神经网络深度学习展示demo,以图形化形式展示,可以直观地理解神经网络的工作原理。
  
  本地部署
  同样也可以将其git到本地部署,便于无网络环境下研究。
  其采用node.js开发,nn.ts即是简化的nn库。
  1、在控制台执行:
  

1
  npm install https://github.com/tensorflow/playground.git

  则在当前目录下,生成node_modules/deep-playground-prototype.
  其主目录位于deep-playground-prototype下的dist目录,将web server主目录设为此即可。
  2、启动npm run server,提示缺乏http-server,因http-server依赖jitsu,则首先安装jitsu。
  执行:
 
1
2
3
   npm install jitsu -g
  cd node_modules/deep-playground-prototype
  jitsu install http-server

  则在deep-playground-prototype目录下,生成http-server目录,web server文件为其下的bin/http-server,执行:
 
1
2
   cd dist
  node ../http-server/bin/http-server

  则可在http://localhost:8080 访问。

阅读更多

NB-IoT简介(1)--下行公共信道与信号之NRS、NPSS、NSSS、NPBCH

阅读更多

机器学习资源-Python版

内容摘自:https://github.com/jobbole/awesome-machine-learning-cn

阅读更多