蘑菇先生学习记


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

  • 搜索
蘑菇先生学习记

神经网络(系列2)

发表于 2017-02-17 | 分类于 深度学习

神经网络的入门知识参见神经网络(系列1)
本文主要对神经网络进行深入,探讨神经网络模型的学习。

代价函数

首先引入一些便于稍后讨论的新标记方法:
假设神经网络的训练样本有m个,每个包含一组输入x和一组输出信号y,L表示神经网络层数,\(S_l\)表示每层的neuron个数(\(S_L\)表示输出层神经元个数),(\(S_L\)代表最后一层中处理单元的个数。
将神经网络的分类定义为两种情况:二类分类和多类分类:
二类分类:\(S_L=1\), y=0 or 1表示哪一类;
K类分类:\(S_L=K\), \(y_i = 1\)表示分到第i类;(K>2)
network_learn
我们回顾逻辑回归问题中我们的代价函数为:
$$J(θ)=-\frac{1}{m}\sum_{i=1}^m\left(y^{(i)}log(h_θ(x^{(i)}))+(1-y^{(i)})log(1-h_θ(x^{(i)}))\right)+\frac{\lambda}{2m}\sum_{j=1}^nθ_j^2$$
在逻辑回归中,我们只有一个输出变量,又称标量(scalar),也只有一个因变量y,但是在神经网络中,我们可以有很多输出变量,我们的\(h_θ(x)\)是一个维度为K的向量,并且训练集中的因变量也是同样维度的一个向量,因此代价函数会比逻辑回归更加复杂一些,为:
$$J(\Theta)=-\frac{1}{m}\Big[\sum_{i=1}^m\sum_{k=1}^K\left(y_k^{(i)}log((h_\Theta(x^{(i)}))_k)+(1-y_k^{(i)})log(1-(h_\Theta(x^{(i)}))_k)\right)\Big] \\\ + \frac{\lambda}{2m}\sum_{l=1}^{L-1}\sum_{i=1}^{s_l}\sum_{j=1}^{s_{l+1}}(\Theta_{ji}^{(l)})^2$$
network_learn
这个看起来复杂很多的代价函数背后的思想还是一样的,我们希望通过代价函数来观察算法预测的结果与真实情况的误差有多大,唯一不同的是,对于每一行特征,我们都会给出K个预测,基本上我们可以利用循环,对每一行特征都预测K个不同结果,然后在利用循环在K个预测中选择可能性最高的一个。
注意:j循环所有的行(由\(s_{l+1}\)层的激活单元数决定,l+1整体是下标),循环i则循环所有的列,由该层(\(s_l\)层)的激活单元数所决定。

阅读全文 »
蘑菇先生学习记

神经网络(系列1)

发表于 2017-02-13 | 分类于 深度学习

非线性假设

我们之前学的,无论是线性回归还是逻辑回归都有这样一个缺点,即:当特征太多时,计算的负荷会非常大。
下面是一个例子:
network
当我们使用\(x_1,x_2\)的多次项式进行预测时,我们可以应用得很好。
之前我们已经看到过,使用非线性的多项式项,能够帮助我们建立更好的分类模型。假设我们有非常多的特征,例如大于100个变量,我们希望用这100个特征来构建一个非线性的多项式模型,结果将是数量非常惊人的特征组合,即便我们只采用两两特征的组合\(x_1x_2+x_1x_3+x_1x_4+…+x_2x_3+x_2x_4+…+x_{99}x_{100}\),我们也会有接近5000个组合而成的特征。这对于一般的逻辑回归来说需要计算的特征太多了。
假设我们希望训练一个模型来识别视觉对象(例如识别一张图片上是否是一辆汽车)。
我们怎样才能这么做呢?一种方法是我们利用很多汽车的图片和很多非汽车的图片,然后利用这些图片上一个个像素的值(饱和度或亮度)来作为特征。
假如我们只选用灰度图片,每个像素则只有一个值(而非RGB值),我们可以选取图片上的两个不同位置上的两个像素,然后训练一个逻辑回归算法利用这两个像素的值来判断图片上是否是汽车:
network
假使我们采用的都是 50x50像素的小图片,并且我们将所有的像素视为特征,则会有2500个特征,如果我们要进一步将两两特征组合构成一个多项式模型,则会有约\(\frac{2500^2}{2}\)个(接近3百万个)特征。普通的逻辑回归模型,不能有效地处理这么多的特征,这时候我们就需要神经网络。

神经元和大脑

神经网络是一种很古老的算法,它最初产生的目的是制造能模拟大脑的机器。
接下来我将介绍神经网络。它能很好地解决不同的机器学习问题。首先介绍一些神经网络的背景知识,由此我们能知道可以用它们来做什么。不管是将其应用到现代的机器学习问题上,还是应用到那些你可能会感兴趣的问题中。也许,这一伟大的人工智能梦想在未来能制造出真正的智能机器。另外,我们还将讲解神经网络是怎么涉及这些问题的,神经网络产生的原因是人们想尝试设计出模仿大脑的算法,从某种意义上说如果我们想要建立学习系统,那为什么不去模仿我们所认识的最神奇的学习机器——人类的大脑呢?

阅读全文 »
蘑菇先生学习记

逻辑回归

发表于 2017-02-11 | 分类于 机器学习

分类问题

在分类问题中,你要预测的变量 y是离散的值,我们将学习一种叫做逻辑回归(Logistic Regression)的算法,这是目前最流行使用最广泛的一种学习算法。

在分类问题中,我们尝试预测的是结果是否属于某一个类(例如正确或错误)。分类问题的例子有:判断一封电子邮件是否是垃圾邮件;判断一次金融交易是否是欺诈;之前我们也谈到了肿瘤分类问题的例子,区别一个肿瘤是恶性的还是良性的。

我们从二元的分类问题开始讨论。我们将因变量(dependant variable)可能属于的两个类分别称为负向类(negative class)和正向类(positive class),则因变量 \(y\in{0,1}\) 其中0表示负向类,1表示正向类。
logistic_regression
logistic_regression2
如果我们要用线性回归算法来解决一个分类问题,对于分类,y取值为 0或者1,但如果你使用的是线性回归,那么假设函数的输出值可能远大于 1,或者远小于0,即使所有训练样本的标签y都等于0或1。尽管我们知道标签应该取值0或者1,但是如果算法得到的值远大于1或者远小于0的话,就会感觉很奇怪。所以我们在接下来的要研究的算法就叫做逻辑回归算法,这个算法的性质是:它的输出值永远在0到1之间。

顺便说一下,逻辑回归算法是分类算法,我们将它作为分类算法使用。有时候可能因为这个算法的名字中出现了“回归”使你感到困惑,但逻辑回归算法实际上是一种分类算法.

阅读全文 »
蘑菇先生学习记

基于jieba分词和nltk的情感分析

发表于 2017-02-10 | 分类于 机器学习

自然语言处理NLP

情感分析作为自然语言处理的一个部分,让我们首先看一下自然语言处理。

相关技术及运用

自动问答(Question Answering,QA):它是一套可以理解复杂问题,并以充分的准确度、可信度和速度给出答案的计算系统,以IBM‘s Waston为代表;
信息抽取(Information Extraction,IE):其目的是将非结构化或半结构化的自然语言描述文本转化结构化的数据,如自动根据邮件内容生成Calendar;
情感分析(Sentiment Analysis,SA):又称倾向性分析和意见挖掘,它是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程,如从大量网页文本中分析用户对“数码相机”的“变焦、价格、大小、重量、闪光、易用性”等属性的情感倾向;
机器翻译(Machine Translation,MT):将文本从一种语言转成另一种语言,如中英机器翻译。

发展现状

基本解决:词性标注、命名实体识别、Spam识别
取得长足进展:情感分析、共指消解、词义消歧、句法分析、机器翻译、信息抽取
挑战:自动问答、复述、文摘、会话机器人
nlp_process

阅读全文 »
蘑菇先生学习记

线性回归

发表于 2017-02-09 | 分类于 机器学习

模型表示

房价预测例子

让我们通过一个例子来开始:这个例子是预测住房价格的,我们要使用一个数据集,数据集包含俄勒冈州波特兰市的住房价格。在这里,我要根据不同房屋尺寸所售出的价格,画出我的数据集。比方说,如果你朋友的房子是1250平方尺大小,你要告诉他们这房子能卖多少钱。那么,你可以做的一件事就是构建一个模型,也许是条直线,从这个数据模型上来看,也许你可以告诉你的朋友,他能以大约 220000(美元)左右的价格卖掉这个房子。这就是监督学习算法的一个例子
house_price
它被称作监督学习是因为对于每个数据来说,我们给出了“正确的答案”,即告诉我们:根据我们的数据来说,房子实际的价格是多少,而且,更具体来说,这是一个回归问题。回归一词指的是,我们根据之前的数据预测出一个准确的输出值,对于这个例子就是价格,同时,还有另一种最常见的监督学习方式,叫做分类问题,当我们想要预测离散的输出值,例如,我们正在寻找癌症肿瘤,并想要确定肿瘤是良性的还是恶性的,这就是 0/1离散输出的问题。更进一步来说,在监督学习中我们有一个数据集,这个数据集被称训练集。下图是房价预测数据格式:
train_set_representation

阅读全文 »
蘑菇先生学习记

机器学习概念

发表于 2017-01-18 | 分类于 机器学习

介绍

机器学习是目前信息技术中最激动人心的方向之一。你或许每天都在不知不觉中使用了机器学习的算法。

  • 你打开谷歌、必应搜索到你需要的内容,正是因为他们有良好的学习算法,谷歌和微软实现了学习算法来排行网页。
  • 你用Facebook或苹果的图片分类程序他能认出你朋友的照片,这也是机器学习。
  • 每次您阅读您的电子邮件垃圾邮件筛选器,可以帮你过滤大量的垃圾邮件这也是一种学习算法。

那么,为什么机器学习如此受欢迎呢?
机器学习不只是用于人工智能领域。我们创造智能的机器,有很多基础的知识。比如,我们可以让机器找到A与B之间的最短路径,但我们仍然不知道怎么让机器做更有趣的事情,如web搜索、照片标记、反垃圾邮件。我们发现,唯一方法是让机器自己学习怎么来解决问题。所以,机器学习已经成为计算机的一个能力,现在它涉及到各个行业和基础科学中。

这里有一些机器学习的案例。

  • 数据挖掘。机器学习被用于数据挖掘的原因之一是网络和自动化技术的增长,这意味着,我们有史上最大的数据集比如说,大量的硅谷公司正在收集 web上的单击数据,也称为点击流数据,并尝试使用机器学习算法来分析数据,更好的了解用户,并为用户提供更好的服务。这在硅谷有巨大的市场。
  • 医疗记录。随着自动化的出现,我们现在有了电子医疗记录。如果我们可以把医疗记录变成医学知识,我们就可以更好地理解疾病。
  • 计算生物学。还是因为自动化技术,生物学家们收集的大量基因数据序列、DNA序列和等等,机器运行算法让我们更好地了解人类基因组,大家都知道这对人类意味着什么。
  • 工程方面。在工程的所有领域,我们有越来越大、越来越大的数据集,我们试图使用学习算法,来理解这些数据。另外,在机械应用中,有些人不能直接操作。例如,我已经在无人直升机领域工作了许多年。我们不知道如何写一段程序让直升机自己飞。我们唯一能做的就是让计算机自己学习如何驾驶直升机。
  • 手写识别。现在我们能够非常便宜地把信寄到这个美国甚至全世界的原因之一就是当你
    写一个像这样的信封,一种学习算法已经学会如何读你信封,它可以自动选择路径,所以我们只需要花几个美分把这封信寄到数千英里外。

  • 自然语言处理或计算机视觉。这些语言理解或图像理解都是属于AI领域。大部分的自然语言处理和大部分的计算机视觉,都应用了机器学习。学习算法还广泛用于自定制程序。每次你去亚马逊或 Netflix或 iTunes Genius,它都会给出其他电影或产品或音乐的建议,这是一种学习算法。仔细想一想,他们有百万的用户;但他们没有办法为百万用户,编写百万个不同程序。软件能给这些自定制的建议的唯一方法是通过学习你的行为,来为你定制服务。

    阅读全文 »
蘑菇先生学习记

windows下idea编程实现远程发布任务到Spark集群

发表于 2016-12-30 | 分类于 大数据

说明

本文的目标是:在windows下,使用idea编写spark任务,并可直接右键运行提交至远程Linux Spark集群上,不需要打包后再拷贝至远程Linux服务器上,再使用命令运行。

准备工作

  • 软件
    • win10
    • jdk1.7(windows版本:1.7.0_79)
    • scala2.11.8(windows版本:scala-2.11.8.zip)
    • idea 2016.3.2(windows版本:ideaIU-2016.3.2.exe)
    • hadoop2.7.3(linux版本:hadoop-2.7.3.tar.gz)
    • spark2.0.2(linux版本:spark-2.0.2-bin-hadoop2.7.tgz)
    • idea scala插件(scala-intellij-bin-2016.3.4.zip,https://plugins.jetbrains.com/idea/plugin/1347-scala)
    • winutil.exe等(winutil下载地址)
    • maven3.3.9(windows版本:apache-maven-3.3.9-bin.zip)
      阅读全文 »
蘑菇先生学习记

spark分布式环境搭建教程

发表于 2016-12-29 | 分类于 大数据

概述

本文是对spark2.0.2分布式集群搭建的一个详细说明。旨在通过阅读该文章帮助开发人员快速搭建spark分布式集群。

三种集群资源管理概述

  • Spark Standalone
    作为Spark的一部分,Standalone是一个简单的集群管理器。它具有master的HA,弹性应对WorkerFailures,对每个应用程序的管理资源的能力,并且可以在现有的Hadoop一起运行和访问HDFS的数据。该发行版包括一些脚本,可以很容易地部署在本地或在AmazonEC2云计算。它可以在Linux,Windows或Mac OSX上运行。

  • Apache Mesos
    Apache Mesos ,分布式系统内核,具有HA的masters和slaves,可以管理每个应用程序的资源,并对Docker容器有很好的支持。它可以运行Spark工作, Hadoop的MapReduce的,或任何其他服务的应用程序。它有Java, Python和C ++ 的API。它可以在Linux或Mac OSX上运行。

  • Hadoop YARN
    Hadoop YARN,作业调度和集群资源管理的分布式计算框架,具有HA为masters和slaves,在非安全模式下支持Docker容器,在安全模式下支持Linux和Windows Container executors,和可插拔的调度器。它可以运行在Linux和Windows上运行。

本文将使用Hadoop YARN方式进行集群搭建。

阅读全文 »
蘑菇先生学习记

hadoop分布式环境搭建教程

发表于 2016-12-29 | 分类于 大数据

概述

本文是搭建hadoop分布式集群的一个详细说明,旨在通过本文,快速入手hadoop

部署方案

hadoop部署方案包括:单机模式、伪分布模式、完全分布模式

本文将使用完全分布模式进行集群搭建

阅读全文 »
蘑菇先生学习记

redis分布式环境搭建教程

发表于 2016-12-29 | 分类于 大数据

redis部署说明

  • 版本
    使用redis最新版3.2.3进行安装
  • 主从关系
    使用1个主节点,3个从节点。主节点提供读写操作,从节点只提供读操作。主节点Master安装在dbp模块,提供大量的写操作服务; 3个从节点。
  • 哨兵机制
    配置3个哨兵,主节点dbp安装1个哨兵,另外3台从服务器选其中两台各安装一个。作为HA高可用方案,防止主节点单点失败,通过重新选举主节点实现故障快速转移。
    阅读全文 »
1…67
xuetf

xuetf

70 日志
13 分类
127 标签
RSS
链接
  • 小王子
  • My Github
© 2021 xuetf