精华内容
下载资源
问答
  • 深度学习结构化数据

    千次阅读 2020-11-20 18:39:48
    近年来,深度学习在视觉对象识别、检测与分割、自动语音识别、自然语言处理和强化学习等领域取得了成功的应用。在这篇论文中,我们将从不同的角度来研究深度学习。 首先,我们将研究泛化问题,这是机器学习理论中...

    本文为美国麻省理工学院(作者:Chiyuan Zhang)的博士论文,共150页。

     

    近年来,深度学习在视觉对象识别、检测与分割、自动语音识别、自然语言处理和强化学习等领域取得了成功的应用。在这篇论文中,我们将从不同的角度来研究深度学习。

     

    首先,我们将研究泛化问题,这是机器学习理论中最基本的概念之一。我们将展示在深度学习的情况下,泛化的特征如何与传统的方法不同,并提出解决方法。

     

    从理论到实践,我们将展示两种不同的深度学习应用。一个是源于从地震记录中自动检测地球物理特征以帮助油气勘探的现实世界问题;另一个是源于对人类听觉系统的计算机神经科学建模和研究。更具体地说,我们将展示深度学习如何适应与来自不同领域的问题相关联的独特结构。

     

    最后,我们转向计算机系统设计的角度,展示我们在构建更好的深度学习系统方面所做的努力,以便在学术界和工业界实现高效和灵活的计算。

     

    In the recent years deep learning has witnessed successful applications in many different domains such as visual object recognition, detection and segmentation, automatic speech recognition, natural language processing, and reinforcement learning. In this thesis, we will investigatedeep learning from a spectrum of different perspectives.

    First of all, we will study the question of generalization, which is one of the most fundamental notion in machine learning theory. We will show how, in the regime of deep learning, thecharacterization of generalization becomes different from the conventional way, and proposealternative ways to approach it.

    Moving from theory to more practical perspectives, we will show two different applicationsof deep learning. One is originated from a real world problem of automatic geophysical featuredetection from seismic recordings to help oil & gas exploration; the other is motivated from acomputational neuroscientific modeling and studying of human auditory system. More specifically, we will show how deep learning could be adapted to play nicely with the unique structuresassociated with the problems from different domains.

    Lastly, we move to the computer system design perspective, and present our efforts in building better deep learning systems to allow efficient and flexible computation in both academicand industrial worlds.

     

    1.  引言

    2.  深度学习中的泛化理解

    3.  具有域结构深度学习的应用

    4.  构建灵活与高效的深度学习系统

    5.  结论

     

    完整资料领取

    展开全文
  • 如何用深度学习处理结构化数据

    万次阅读 2017-12-21 11:00:36
    将神经网络用于结构化数据任务
    这篇博客主要关注的是深度学习领域一个并不非常广为人知的应用领域:结构化数据。本文作者为旧金山大学(USF)在读研究生 Kerem Turgutlu。

     

    使用深度学习方法按照本文所介绍的步骤处理结构化数据有这样的好处:

     

    • 无需领域知识
    • 表现优良


    在机器学习/深度学习或任何类型的预测建模任务中,都是先有数据然后再做算法/方法。这也是某些机器学习方法在解决某些特定任务之前需要做大量特征工程的主要原因,这些特定任务包括图像分类、NLP 和许多其它「非常规的」数据的处理——这些数据不能直接送入 logistic 回归模型或随机森林模型进行处理。相反,深度学习无需任何繁杂和耗时的特征工程也能在这些类型的任务取得良好的表现。大多数时候,这些特征需要领域知识、创造力和大量的试错。当然,领域专业知识和精巧的特征工程仍然非常有价值,但这篇文章将提及的技术足以让你在没有任何领域知识的前提下向 Kaggle 竞赛的前三名看齐,参阅:http://blog.kaggle.com/2016/01/22/rossmann-store-sales-winners-interview-3rd-place-cheng-gui/


    8022901.png

    图 1:一只萌狗和一只怒猫

     

    由于特征生成(比如 CNN 的卷积层)的本质和能力很复杂,所以深度学习在各种各样的图像、文本和音频数据问题上得到了广泛的应用。这些问题无疑对人工智能的发展非常重要,而且这一领域的顶级研究者每年都在分类猫、狗和船等任务上你追我赶,每年的成绩也都优于前一年。但在实际行业应用方面我们却很少看到这种情况。这是为什么呢?公司企业的数据库涉及到结构化数据,这些才是塑造了我们的日常生活的领域。

     

    首先,让我们先定义一下结构化数据。在结构化数据中,你可以将行看作是收集到的数据点或观察,将列看作是表示每个观察的单个属性的字段。比如说,来自在线零售商店的数据有表示客户交易事件的列和包含所买商品、数量、价格、时间戳等信息的列。

     

    下面我们给出了一些卖家数据,行表示每个独立的销售事件,列中给出了这些销售事件的信息。


    8659102.png

    图 2:结构化数据的 pandas dataframe 示例

     

    接下来我们谈谈如何将神经网络用于结构化数据任务。实际上,在理论层面上,创建带有任何所需架构的全连接网络都很简单,然后使用「列」作为输入即可。在损失函数经历过一些点积和反向传播之后,我们将得到一个训练好的网络,然后就可以进行预测了。

     

    尽管看起来非常简单直接,但在处理结构化数据时,人们往往更偏爱基于树的方法,而不是神经网络。原因为何?这可以从算法的角度理解——算法究竟是如何对待和处理我们的数据的。

     

    人们对结构化数据和非结构化数据的处理方式是不同的。非结构化数据虽然是「非常规的」,但我们通常处理的是单位量的单个实体,比如像素、体素、音频频率、雷达反向散射、传感器测量结果等等。而对于结构化数据,我们往往需要处理多种不同的数据类型;这些数据类型分为两大类:数值数据和类别数据。类别数据需要在训练之前进行预处理,因为包含神经网络在内的大多数算法都还不能直接处理它们。

     

    编码变量有很多可选的方法,比如标签/数值编码和 one-hot 编码。但在内存方面和类别层次的真实表示方面,这些技术还存在问题。内存方面的问题可能更为显著,我们通过一个例子来说明一下。

     

    假设我们列中的信息是一个星期中的某一天。如果我们使用 one-hot 或任意标签编码这个变量,那么我们就要假设各个层次之间都分别有相等和任意的距离/差别。


    9344603.png

    图 3:one-hot 编码和标签编码

     

    但这两种方法都假设每两天之间的差别是相等的,但我们很明显知道实际上并不是这样,我们的算法也应该知道这一点!

     

    「神经网络的连续性本质限制了它们在类别变量上的应用。因此,用整型数表示类别变量然后就直接应用神经网络,不能得到好的结果。」[1]

     

    基于树的算法不需要假设类别变量是连续的,因为它们可以按需要进行分支来找到各个状态,但神经网络不是这样的。实体嵌入(entity embedding)可以帮助解决这个问题。实体嵌入可用于将离散值映射到多维空间中,其中具有相似函数输出的值彼此靠得更近。比如说,如果你要为一个销售问题将各个省份嵌入到国家这个空间中,那么相似省份的销售就会在这个投射的空间相距更近。

     

    因为我们不想在我们的类别变量的层次上做任何假设,所以我们将在欧几里得空间中学习到每个类别的更好表示。这个表示很简单,就等于 one-hot 编码与可学习的权重的点积。

     

    嵌入在 NLP 领域有非常广泛的应用,其中每个词都可表示为一个向量。Glove 和 word2vec 是其中两种著名的嵌入方法。我们可以从图 4 看到嵌入的强大之处 [2]。只要这些向量符合你的目标,你随时可以下载和使用它们;这实际上是一种表示它们所包含的信息的好方法。


    0049804.png

    图 4:来自 TensorFlow 教程的 word2vec

     

    尽管嵌入可以在不同的语境中使用(不管是监督式方法还是无监督式方法),但我们的主要目标是了解如何为类别变量执行这种映射。

     

    实体嵌入

     

    尽管人们对「实体嵌入」有不同的说法,但它们与我们在词嵌入上看到的用例并没有太大的差异。毕竟,我们只关心我们的分组数据有更高维度的向量表示;这些数据可能是词、每星期的天数、国家等等。这种从词嵌入到元数据嵌入(在我们情况中是类别)的转换使用让 Yoshua Bengio 等人使用一种简单的自动方法就赢得了 2015 年的一场 Kaggle 竞赛——通常这样做是无法赢得比赛的。参阅:https://www.kaggle.com/c/pkdd-15-predict-taxi-service-trajectory-i

     

    「为了处理由客户 ID、出租车 ID、日期和时间信息组成的离散的元数据,我们使用该模型为这些信息中的每种信息联合学习了嵌入。这种方法的灵感来自于自然语言建模方法 [2],其中每个词都映射到了一个固定大小的向量空间(这种向量被称为词嵌入)。[3]


    0595005.png

    图 5:使用 t-SNE 2D 投影得到的出租车元数据嵌入可视化

     

    我们将一步步探索如何在神经网络中学习这些特征。定义一个全连接的神经网络,然后将数值变量和类别变量分开处理。

     

    对于每个类别变量:

     

    1. 初始化一个随机的嵌入矩阵 mxD:


    m:类别变量的不同层次(星期一、星期二……)的数量

    D:用于表示的所需的维度,这是一个可以取值 1 到 m-1 的超参数(取 1 就是标签编码,取 m 就是 one-hot 编码)


    1254406.png

    图 6:嵌入矩阵

     

    2. 然后,对于神经网络中的每一次前向通过,我们都在该嵌入矩阵中查询一次给定的标签(比如为「dow」查询星期一),这会得到一个 1xD 的向量。


    1792807.png

    图 7:查找后的嵌入向量


    3. 将这个 1×D 的向量附加到我们的输入向量(数值向量)上。你可以把这个过程看作是矩阵增强,其中我们为每一个类别都增加一个嵌入向量,这是通过为每一特定行执行查找而得到的。


    2218908.png

    图 8:添加了嵌入向量后

     

    4. 在执行反向传播的同时,我们也以梯度的方式来更新这些嵌入向量,以最小化我们的损失函数。

     

    输入一般不会更新,但对嵌入矩阵而言有一种特殊情况,其中我们允许我们的梯度反向流回这些映射的特征,从而优化它们。

     

    我们可以将其看作是一个让类别嵌入在每次迭代后都能进行更好的表示的过程。


    注意:根据经验,应该保留没有非常高的基数的类别。因为如果一个变量的某个特定层次占到了 90% 的观察,那么它就是一个没有很好的预测价值的变量,我们可能最好还是避开它。

    好消息

     

    通过在我们的嵌入向量中执行查找并允许 requires_grad=True 并且学习它们,我们可以很好地在我们最喜欢的框架(最好是动态框架)中实现上面提到的架构。但 Fast.ai 已经实现了所有这些步骤并且还做了更多。除了使结构化的深度学习更简单,这个库还提供了很多当前最先进的功能,比如差异学习率、SGDR、周期性学习率、学习率查找等等。这些都是我们可以利用的功能。你可以在以下博客进一步了解这些主题:


    https://medium.com/@bushaev/improving-the-way-we-work-with-learning-rate-5e99554f163b


    https://medium.com/@surmenok/estimating-optimal-learning-rate-for-a-deep-neural-network-ce32f2556ce0


    https://medium.com/@markkhoffmann/exploring-stochastic-gradient-descent-with-restarts-sgdr-fa206c38a74e


    使用 Fast.ai 实现

     

    在这一部分,我们将介绍如何实现上述步骤并构建一个能更有效处理结构化数据的神经网络。

     

    为此我们要看看一个热门的 Kaggle 竞赛:https://www.kaggle.com/c/mercari-price-suggestion-challenge/。对于实体嵌入来说,这是一个非常合适的例子,因为其数据基本上都是类别数据,而且有相当高的基数(也不是过高),另外也没有太多其它东西。

     

    数据:


    约 140 万行


    • item_condition_id:商品的情况(基数:5)
    • category_name:类别名称(基数:1287)
    • brand_name:品牌名称(基数:4809)
    • shipping:价格中是否包含运费(基数:2)

     

    重要说明:因为我已经找到了最好的模型参数,所以我不会在这个例子包含验证集,但是你应该使用验证集来调整超参数。


    第 1 步:

     

    将缺失值作为一个层次加上去,因为缺失本身也是一个重要信息。


            
    1. train.category_name = train.category_name.fillna('missing').astype('category')

    2. train.brand_name = train.brand_name.fillna('missing').astype('category')

    3. train.item_condition_id = train.item_condition_id.astype('category')

    4. test.category_name = test.category_name.fillna('missing').astype('category')

    5. test.brand_name = test.brand_name.fillna('missing').astype('category')

    6. test.item_condition_id = test.item_condition_id.astype('category')


    第 2 步:

     

    预处理数据,对数值列进行等比例的缩放调整,因为神经网络喜欢归一化的数据。如果你不缩放你的数据,网络就可能格外重点关注一个特征,因为这不过都是点积和梯度。如果我们根据训练统计对训练数据和测试数据都进行缩放,效果会更好,但这应该影响不大。这就像是把每个像素的值都除以 255,一样的道理。

     

    因为我们希望相同的层次有相同的编码,所以我将训练数据和测试数据结合了起来。


            
    1. combined_x, combined_y, nas, _ = proc_df(combined, 'price', do_scale=True)


    第 3 步:

     

    创建模型数据对象。路径是 Fast.ai 存储模型和激活的地方。


            
    1. path = '../data/'

    2. md = ColumnarModelData.from_data_frame(path, test_idx, combined_x, combined_y, cat_flds=cats, bs= 128


    第 4 步:

     

    确定 D(嵌入的维度),cat_sz 是每个类别列的元组 (col_name, cardinality+1) 的列表。


            
    1. # We said that D (dimension of embedding) is an hyperparameter

    2. # But here is Jeremy Howard's rule of thumb

    3. emb_szs = [(c, min(50, (c+1)//2)) for _,c in cat_sz]

    4. # [(6, 3), (1312, 50), (5291, 50), (3, 2)]


    第 5 步:

     

    创建一个 learner,这是 Fast.ai 库的核心对象。


            
    1. params: embedding sizes, number of numerical cols, embedding dropout, output, layer sizes, layer dropouts

    2. m = md.get_learner(emb_szs, len(combined_x.columns)-len(cats),

    3.                   0.04, 1, [1000,500], [0.001,0.01], y_range=y_range)


    第 6 步:

     

    这部分在我前面提及的其它文章中有更加详细的解释。

     

    要充分利用 Fast.ai 的优势。

     

    在损失开始增大之前的某个时候,我们要选择我们的学习率……


            
    1. # find best lr

    2. m.lr_find()

    3. # find best lr

    4. m.sched.plot()


    3723809.png

    图 9:学习率与损失图


    拟合

     

    我们可以看到,仅仅过了 3 epoch,就得到:


            
    1. lr = 0.0001

    2. m.fit(lr, 3, metrics=[lrmse])


    4284410.png


    更多拟合


            
    1. m.fit(lr, 3, metrics=[lrmse], cycle_len=1)


    4778911.png


    还有更多……


            
    1. m.fit(lr, 2, metrics=[lrmse], cycle_len=1)


    5344912.png


    所以,在短短几分钟之内,无需进一步的其它操作,这些简单却有效的步骤就能让你进入大约前 10% 的位置。如果你真的有更高的目标,我建议你使用 item_description 列并将其作为多个类别变量使用。然后把工作交给实体嵌入完成,当然不要忘记堆叠和组合。


    参考文献


    [1] Cheng Guo, Felix Berkhahn (2016, April, 22) Entity Embeddings of Categorical Variables. Retrieved from https://arxiv.org/abs/1604.06737.

    [2] TensorFlow Tutorials: https://www.tensorflow.org/tutorials/word2vec

    [3] Yoshua Bengio, et al. Artificial Neural Networks Applied to Taxi Destination Prediction. Retrieved from https://arxiv.org/pdf/1508.00021.pdf.

    75716%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20170924135925.png



    原文链接:https://towardsdatascience.com/structured-deep-learning-b8ca4138b848

    展开全文
  • 深度学习

    千次阅读 多人点赞 2019-01-14 14:51:41
    #深度学习 我与这世间所有的羁绊,一旦连上,就再也断不开。 羁绊越深,痛苦便越深。 关于这篇深度学习的文章,总共六章。 综述而已。 01:研究背景 02:深度学习网络 03:深度学习框架 04:深度学习应用 05:未来...

    #深度学习
    我与这世间所有的羁绊,一旦连上,就再也断不开。
    羁绊越深,痛苦便越深。
    关于这篇深度学习的文章,总共六章。
    综述而已。
    01:研究背景 02:深度学习网络 03:深度学习框架
    04:深度学习应用 05:未来挑战和潜在研究方向 06:未来展望
    关于本文引用CSDN资料,将会在最后给出链接。

    ##研究背景
    谈及深度学习,必须要考虑其前身机器学习。下面是关于机器学习的介绍,网上找的…
    A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P if its performance at tasks in T, as measured by P, improves with experience E .
    “一个电脑程序要完成任务(T),如果电脑获取的关于T的经验(E)越多就表现(P)得越好,那么我们就可以说这个程序‘学习’了关于T的经验。
    简单来说,解释什么叫“机器的学习”,如果输入的经验越多表现的越好。
    其实跟人做事一样,做的事情次数多了,自然知道怎么办。这就是经验。
    只不过,我们把经验告诉机器,让机器来做。懒惰使人进步!
    举个栗子!**风暴预测系统
    在这里插入图片描述我们首先浏览所有的历史风暴数据,从这些大量的数据中学习出某些“模式”,这些“模式”包含了具体的哪些条件可以导致风暴。比如我们也许可以通过学习历史数据发现:温度超过40度,湿度在80-100之间,就容易发生风暴。
    “温度”、“湿度”等等指标,就是机器学习中的“特征“,而这些特征都是人工设置好的。就是说,我们在做这样一个预测系统的时候,首先由
    专家通过分析哪些“特征”是重要的,然后机器就通过分析历史数据中的这些特征的数据,来找到相应的模式,也就是怎样的特征的组合会导致怎样的结果。
    当然这是网友回答,但我觉得解释的很好。
    所以嘛!
    机器学习算法的效率高度依赖于
    输入数据**的良好表示。
    与良好的数据表示相比,糟糕的数据表示通常会导致较低的性能。
    因此,特征工程长期以来一直是机器学习的一个重要研究方向,它注重从原始数据中构建特征,并导致了大量的研究。此外,特征工程通常是非常具体的领域,需要大量的人力投入。划重点,特征工程
    既然费事费力,还要依靠专家, 有木有更轻松的办法!
    有!深度学习呗。
    “Deep learning is a particular kind of machine learning that achieves great power and flexibility by learning to represent the world as nested hierarchy of concepts, with each concept defined in relation to simpler concepts, and more abstract representations computed in terms of less abstract ones.”
    深度学习是一种特殊的机器学习,它通过学习将世界表示为概念的嵌套层次结构来获得强大的能力和灵活性,每一个概念由更简单的概念相连,抽象的概念通过没那么抽象的概念计算。
    其实我觉得nest这个单词形容的很贴切,鸟巢。层层相扣,化繁为简的艺术
    举个栗子!!!识别正方形和圆
    在这里插入图片描述
    你看这个正方形它又大又圆,就像这个文章又长又宽。
    我们的眼睛第一件要做的事情,就是看看这个形状有没有4条边。如果有的话,就进一步检查,这4条边是不是连在一起,是不是等长的,是不是相连的互相垂直。如果满足上面这些条件,那么我们可以判断,是一个正方形。
    从上面的过程可以看出,我们把一个复杂的抽象的问题(形状),分解成简单的、不那么抽象的任务(边、角、长度)。深度学习从很大程度上就是做这个工作,把复杂任务层层分解成一个个小任务。
    化繁为简,而且要实现自动化!这才是关键!

    相比之下,深度学习算法以自动化的方式进行特征提取,使得研究者可以用最少的领域知识和人力去提取有区别的特征。
    这些算法包括数据表示的分层架构,其中高级功能可以从网络的最后一层提取,而低级功能可以从较低层提取。
    深度学习的根源在于传统的神经网络,它的表现明显优于前人。它利用神经元间转换的图形技术来开发多层次的学习模型。许多最新的深度学习技术已经被展示出来,并在不同类型的应用。
    我们的大脑可以从不同的场景中自动提取数据表示。输入是眼睛接收到的场景信息,输出是分类对象。这突出了深度学习的主要优势。它模仿了人类大脑的工作方式。
    据说人的大脑有三分之一在进行图像处理,这就是为啥,我们可以不假思索的说出周围的各个事物,甚至在遇见老朋友的时候,忘记他叫啥了,但可以记住他的脸。
    我可以忘了你的名字,但永远忘不了你的脸。
    该死,我就是这么深情。

    既然这样,对比一下,机器学习深度学习
    识别狗和猫
    如果是传统机器学习的方法,我们会首先定义一些特征,如有没有胡须,耳朵、鼻子、嘴巴的模样等等。总之,我们首先要确定相应的“面部特征”作为我们的机器学习的特征,以此来对我们的对象进行分类识别。
    深度学习的方法则更进一步。深度学习自动地找出这个分类问题所需要的重要特征。
    在这里插入图片描述
    比如人脸的识别
    可以看到4层,输入的是Raw Data,就是原始数据,这个机器没法理解。于是,深度学习首先尽可能找到与这个头像相关的各种边,这些边就是底层的特征(Low-level features),这就是上面写的第一步;然后下一步,对这些底层特征进行组合,就可以看到有鼻子、眼睛、耳朵等等,它们就是中间层特征(Mid-level features),这就是上面写的第二步;最后,我们队鼻子眼睛耳朵等进行组合,就可以组成各种各样的头像了,也就是高层特征(High-level features)这个时候就可以识别出或者分类出各种人的头像了。
    这样,把这个过程交给计算机,那么会很迅速解决问题。
    小结一下,机器学习–特征。深度学习–nest

    ###深度学习的历史
    了解完机器学习和深度学习的自我介绍,我们要追根溯源,看看深度学习的历史。

    起源于公元前300年–亚里士多德提出(associationism)联合心理学
    开创了人类试图理解大脑的历史,因为这种想法要求科学家们理解人类识别系统的机制。联合心理学家,把人思考世界分为感知和心理活动,深度学习想做的就是这件事,让机器像人一样思考。

    深度学习的现代史始于1943年–(MCP)模型被引入,并被称为人工神经模型的原型。
    他们基于模拟人脑新皮质的神经网络建立了一个计算机模型,算法和数学的结合被称为阈值逻辑,用来模拟人类的思维过程,而不是学习。
    MCP之后,自然环境中的生物系统的赫布理论(Hebbian)理论得以实现
    我们可以假定,反射活动的持续与重复会导致神经元稳定性的持久性提升……当神经元A的轴突与神经元B很近并参与了对B的重复持续的兴奋时,这两个神经元或其中一个便会发生某些生长过程或代谢变化,致使A作为能使B兴奋的细胞之一,它的效能增强了。这一理论经常会被总结为“连在一起的神经元一起激活”(Cells that fire together, wire together)。这可以用于解释“联合学习”(associative learning)
    你看看这英文解释的,一起燃烧,疯狂给对方打电话。简直就是虐狗。

    1958–第一个被称为感知系统中的感知机(Perceptron)的电子设备被引入。
    人总是会被新鲜事物所吸引,疯狂追捧,忘记了初衷。
    总有理智的人,证明了感知机致命的缺点,无法解决异或问题。
    迎来了人工智能的冬季(AI WINTER
    冬天再冷,春天就在前面等你。
    在第一个人工智能冬季结束时,反向宣传家的出现成为另一个里程碑
    Werbos引入了反向传播(backpropagation),即在训练深度学习模型中使用错误,这打开了通向现代神经网络的大门。其实这就是经典的BP算法。后面会简单介绍一下下。

    1980年,启发卷积神经网络的新感知机引入了。
    1986年–递归神经网络(RNNs)。
    20世纪90年代,LeNet在使深层神经网络(DNNs)实际工作(硬件的限制)。
    2006年左右,深度信念网络(DBNs)和分层预训练框架被开发出来。
    深度学习最近一个鼓舞人心的应用是谷歌AlphaGo,它在2017年初完全震惊了世界。经过几十年的发展,与其他机器学习算法相比,深度学习是最有效的工具之一。
    阿尔法狗,有三代。
    一代是五段的围棋少年,贼菜。二代两个五段,互相PK升级到九段。
    三代,告诉它下棋规则,吃一堑长一智,比九段还厉害。
    其实小时候学国际象棋的时候,那时候就有深蓝跟国象大师下棋,只不过是方法不太一样。

    简单回顾一下历史
    1.神经元模型
    在这里插入图片描述
    神经元有两种状态:兴奋和抑制。
    一般情况下,大多数的神经元是处于抑制状态,但是一旦某个神经元收到刺激,导致它的电位超过一个阈值,那么这个神经元就会被激活,处于“兴奋”状态,进而向其他的神经元传播化学物质(其实就是信息)。
    根据这个呢,人们思考出了MCP模型。

    2.MCP模型
    在这里插入图片描述
    在这里插入图片描述
    θ–神经元的激活阈值
    函数f(·)也被称为是激活函数。w是权值,x是输入
    函数f(·)可以用一个阶跃方程表示
    大于阈值激活;否则则抑制。
    但是这样有点太粗暴,因为阶跃函数不光滑,不连续,不可导,因此我们更常用的方法是用sigmoid函数来表示函数f(·)
    其实找到更棒的函数,发文章是不是超级快。
    #sigmoid函数
    在这里插入图片描述
    在这里插入图片描述
    这个函数比起阶跃函数,0和1突变,可是圆滑多了。盘盘就好了。

    3.感知机模型
    在这里插入图片描述
    w为感知机输入层到输出层连接的权重
    b表示输出层的偏置
    打个比方 有点(1,1) 属于1类 点(2,2)属于2类,请问是否能从原点画一条线把他们分开,不可以,所以需要偏置值b,这样线段就不从(0,0)点出发了
    其实这就是分类问题
    在这里插入图片描述
    前面说了嘛,人们丧失了理智,疯狂追捧。
    Minsky指出这点时,事态就发生了变化。
    Minsky在1969年出版了一本叫《Perceptron》的书里面用详细的数学证明了感知器的弱点(数学家真是闹不住啊),尤其是感知器对XOR(异或)这样的简单分类任务都无法解决。进入了AI winter,然后就是BP反向传播打破了这个僵局。
    4.BP算法
    原谅我,不想贴图了,大家可以看看这个博客,关于BP,安排的明明白白。
    https://www.cnblogs.com/charlotte77/p/5629865.html
    其实呢,你会发现,就是在修正权重。如何自动化的修正权重就很厉害了。
    相当于在修正误差,把误差减小到最小。
    有点类似于电力系统的潮流计算,这看来知识都是相通的!
    BP之后就迎来的各种神经网络,就不一一介绍了。
    在这里插入图片描述
    ##流行的深度学习网络
    经过第一章,你会发现,深度学习整体框架就有了。那么有一些比较流行的
    RVNN.RNN.CNN.DGN
    分别是递归神经网络、循环神经网络、卷积神经网络、深层神经网络。

    ####递归神经网络
    在这里插入图片描述
    在这里插入图片描述
    同样是根据前面的模型,分输入层、隐含层、输出层。
    通过RvNN可以在层次结构中进行预测,使用组合向量对输出进行分类
    RvNN的开发主要受到递归自联想内存(RAAM)的启发,是一种用于处理任意形状的对象的体系结构,如树或图形。方法是采用可变大小的递归数据结构,生成固定宽度的分布式表示。
    为了训练网络,引入了结构学习方案(BTS)。BTS采用类似于标准反向传播算法的方法,并且能够支持树状结构。
    下面是两个生动的栗子,很好吃。
    在这里插入图片描述
    在这里插入图片描述
    不用过多解释,也看的懂,把一个图像、一个句子,分类处理,组合。
    这就是前面提到的nest这个单词嘛。化繁为简。

    Socher等人提出了一种能够处理不同方式输入的RvNN体系结构。上图展示了两个使用RvNN对自然图像和自然语言句子进行分类的例子。一个图像被分成不同的兴趣部分时,一个句子被分成单词。RvNN计算可能的对的得分,以合并它们并构建语法树。对于每一对单元,RvNN计算合并的合理性得分。然后将得分最高的一对组合成一个复合向量。

    因为可能用到递归技巧,简单解释一下。
    程序调用自身的编程技巧称为递归(recursion)。递归作为一种算法在程序设计语言中广泛应用。
    一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
    假设我们现在都不知道什么是递归,我们自然想到打开浏览器,输入到谷歌的网页,我们点击搜索递归,然后我们在为维基百科中了解到了递归的基本定义,在了解到了递归实际上是和栈有关的时候,你又蒙圈了,什么是栈呢?数据结构没学清楚,此时的你只能又打开谷歌,搜索什么是栈.接下来你依次了解了内存/操作系统.在你基本了解好知识之后,你通过操作系统了解了内存,通过内存了解了栈,通过栈了解了什么是递归这下你恍然大悟!原来这就是递归啊!(斐波那契数列、兔子问题)
    知识的海洋太宽广,我有点受不了。

    ####循环神经网络
    在这里插入图片描述
    最重要的区别,在于,隐含层之间也有了联系
    但即便如此,自己的输出还是跟自己的输入层有直接的联系。
    RNN的一个主要问题是它对消失爆炸梯度的敏感性。换句话说,梯度可能由于训练过程中大量的大小导数的乘积而衰减或爆炸成指数级。
    看完BP那篇文章,就会懂。会涉及大量求导问题。
    在修正参数的时候,会出现消失或者爆炸!导致无法继续更新权重。
    随着时间的推移,这种灵敏度会降低,这意味着网络会忘记新输入的初始输入。
    因此,长短期内存通过在其循环连接中提供内存块来处理这个问题。

    在这里插入图片描述
    再来介绍一下各个符号的含义:
    x是输入
    h是隐层单元
    o为输出
    L为损失函数
    y为训练集的标签

    在这里插入图片描述
    t时刻的输出:
    在这里插入图片描述
    最终模型的预测输出:
    在这里插入图片描述
    在这里插入图片描述
    前面说了,会用到sigmoid函数,看一下它的图像以及求导图像。
    在求导过程中,就会出现越求越小,这就是前面说的梯度消失与爆炸。
    总结一下,sigmoid函数的缺点:
    1、导数值范围为(0,0.25],反向传播时会导致“梯度消失“。tanh函数导数值范围更大,相对好一点。
    2、sigmoid函数不是0中心对称,tanh函数是,可以使网络收敛的更好。
    在这里插入图片描述
    上面是tanh函数,
    tanh函数作为激活函数,那tanh函数的导数最大也才1,而且又不可能所有值都取到1,那相当于还是一堆小数在累乘,还是会出现“梯度消失“
    那为什么还要用它做激活函数呢?原因是tanh函数相对于sigmoid函数来说梯度较大,收敛速度更快且引起梯度消失更慢。
    反正都是消失,消失的慢一点更好嘛。
    如果幸福终究会消失,那么消失的越慢越好。
    就像香水,多沉浸一秒也值得。
    ####CNN卷积神经网络
    在这里插入图片描述
    CNN在深度学习中也是一种流行且广泛使用的算法,它广泛应用于NLP、语音处理、计算机视觉等多种应用中它模拟了猫大脑中包含复杂细胞序列的视觉皮层。
    CNN有三个主要优势,即参数共享稀疏交互等变表示
    为了充分利用输入数据的二维结构(如图像信号),使用网络中的本地连接和共享权,而不是传统的全连通网络。这个过程产生的参数非常少,这使得网络更快、更容易训练。(不展开了!)

    ####卷积计算
    在这里插入图片描述
    特殊的矩阵运算,对应元素相乘。不是行列那种。

    ####稀疏交互
    在这里插入图片描述
    在这里插入图片描述
    前面说了三个特点,参数共享**、稀疏交互、**等变表示
    参数共享是指在一个模型的多个函数中使用相同的参数。
    等边表示,对于卷积,参数共享的特殊形式使得神经网络具有对平移等变的性质。
    如果一个函数满足输入改变,输出也以同样的方式改变,就说它是等变的。

    而上图就是关于稀疏交互,个人理解。
    第一张图,如果一个输入想对应所有输出,那么看起来会非常错综复杂
    第二张图,通过加入隐含层,不但使互相有了交流,而且最终个别输入所能到达的输出增加。

    ####深层生成网络
    DBN(深层信念网络)、(DBM)深玻尔兹曼机、生成对抗性网络(GAN)和变分自编码器(VAE),实在不想写了,贴几张图,想研究啥查啥。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    以上四种就是混合概率生成模型,通过定义能量概率模型进行分析。
    具体不展开了,以后到具体问题在分析吧。

    ###深度学习技术和框架
    在这里插入图片描述
    这是一个简单的框架,以及各个开发平台和适用的语言。
    在这里插入图片描述
    ###深度学习的各种应用
    在各个招聘平台上看,真的挣钱呀。好好学习,天天向上。
    过自己想要的生活,做自己喜欢的事,改变自己想改变的事。
    更重要的,爱自己想爱的人。
    在这里插入图片描述
    在这里插入图片描述
    ###未来的挑战及潜在研究方向
    在这里插入图片描述
    ###未来挑战
    在这里插入图片描述
    引用链接如下,肯定有遗忘的,如原博主看到,不要生气,请温柔联系我
    后续补上。
    http://www.cnblogs.com/maybe2030/p/5597716.html神经网络基础
    https://baijiahao.baidu.com/s?id=1595509949786067084&wfr=spider&for=pc深度学习和机器学习的对比
    https://www.cnblogs.com/charlotte77/p/5629865.html一文弄懂神经网络中的BP算法
    https://blog.csdn.net/yinkun6514/article/details/79281278
    https://blog.csdn.net/tkkzc3E6s4Ou4/article/details/83422720机器学习高质量数据大合集
    http://lib.csdn.net/article/deeplearning/59097?knId=1746 RBM原理
    https://www.jianshu.com/p/998cf8e52209 GAN学习笔记

    如果没有贫富差距,没有自然选择,优胜劣汰。
    我会享受那下午两点的阳光,和爱的人散步。
    不过在那之前,要加油。

    展开全文
  • 摘要:本文详细阐述了深度学习如何来实现处理结构化数据的方法。嵌入源自于NLP(word2vec)中的单词学习,上图来自Aylien本博文将涉及机器学习中两个重复出现的问题:第一个问题是深度学习在图像和文本中都有较好的...

    摘要: 本文详细阐述了深度学习如何来实现处理结构化数据的方法。


    嵌入源自于 NLP word2vec )中的单词学习,上图来自 Aylien

    本博文将涉及机器学习中两个重复出现的问题:第一个问题是深度学习在图像和文本中都有较好的表现,我们又如何将其用于表格数据?其次,在构建机器学习模型时,你必须始终问自己一个问题:将如何处理数据集中的分类变量?令人惊讶的是,我们可以用相同的答案回答这两个问题:实体嵌入。

    现在,深度学习在许多方面都优于其他机器学习方法:图像识别,音频分类和自然语言处理只是众多应用中的一部分。这些研究领域都使用所谓的“非结构化数据”,即没有预定义结构的数据。一般来说,这些数据也可以按照一定的顺序(像素,用户行为,文本)排列。深度学习已成为处理非结构化数据的标准。现在的问题是深度学习是否也可以在结构化数据上有较好的表现。结构化数据是以表格格式组织的数据,其中列表示不同的特征,而行表示不同的数据样本。这与数据在Excel工作表中的表现形式类似。目前,结构化数据集的黄金标准是梯度提升树GBT模型(Chen&Guestrin,2016)。他们在Kaggle比赛以及学术文献中一直都有最好的表现。最近的深度学习已经表明它可以在结构化数据上匹配这些增强树模型。实体嵌入在此扮演着重要角色。

     

    结构化数据与非结构化数据

    实体嵌入

    实体嵌入在结构化数据上拟合神经网络这一方面已经取得成功,例如,Kaggle竞赛中的获胜方案使用实体嵌入来处理每次乘坐的分类元数据预测出租车车距(deBrébisson et al.,2015)。同样,预测罗斯曼药店商店销售任务的第三个解决方案使用了比第一个和第二个解决方案更为简单的方法。该团队使用一个具有实体嵌入的简单前馈神经网络作为分类变量来实现,分类变量的种类超过1000个类别,如商店ID(Guo&Berkahn,2016)。

    如果这是你第一次阅读有关嵌入的内容,我建议你先阅读本文。简而言之,嵌入是指向量的类别表示。让我们来演示一下下述这句话是如何工作的:

    ‘Deep learning is deep’

    我们可以用向量来表示每个单词,所以“deep”这个单词变成类似[0.20,0.82,0.45,0.67]的东西。实际上,人们会用像1 2 3 1这样的整数代替单词,并使用查找表来查找链接到每个整数的矢量。这种做法在自然语言处理中非常常见,并且还用于包含行为序列的数据,如在线用户的踪迹。实体嵌入是指在分类变量上使用这一原则,其中分类变量的每个类别都由向量表示。

    让我们快速回顾下机器学习处理分类变量的两种常用方法。

    1. 热编码(One-hot encoding):创建二进制子特征,如word_deep,word_learning,word_is。属于该数据点的类别值为1,其他值为0。所以,对于“deep”这个词,特征word_deep为1,word_learning,word_is则为0。

    2. 标签编码(Label encoding):像之前的例子那样分配整数,因此“deep”为1,“learning”为2等等。这种方法比较适用于基于树的方法,但不适用于线性模型,因为它意味着赋值的顺序。

    实体嵌入基本上将标签编码方法上升了一个层次,不仅仅是将一个整数分配给一个类别,而是整个向量。这个向量可以是任意尺寸,并且必须由研究人员指定。你可能想知道这些实体嵌入的优点是什么。

    1.实体嵌入解决了独热编码的缺点。具有许多类别的独热编码变量会导致非常稀疏的向量,这在计算上是无效的,并且难以优化。标签编码解决了这一问题,但只能用于基于树的模型。

    2.嵌入提供有关不同类别之间距离的信息。使用嵌入的优点在于,在神经网络的训练期间,也要训练分配给每个类别的向量。因此,在训练过程结束时,我们最终会得到一个代表每个类别的向量。这些训练过的嵌入被可视化,为每个类别提供可视化。在Rossmann销售预测任务中,即使没有为模型提供地理位信息,德国的可视化嵌入显示了与各州地理位置相似的集群。

    3.训练好的嵌入可以保存并用于非深度学习模型。例如,每月训练分类特征的嵌入并保存。通过加载训练好的分类特征嵌入,我们可以使用这些嵌入来训练随机森林或梯度提升树GBT模型。

    选择嵌入尺寸

    嵌入尺寸是指代表每个类别的向量长度,并且可以为每个分类特征设置。 类似于神经网络中超参数的微调(tuning),嵌入尺寸的选择没有硬性的规定。在出租车距离预测任务中,每个特征的嵌入尺寸为10。这些特征具有不同的维度,从7(一周的天数)到57106(客户端ID)。为每个类别选择相同的嵌入尺寸是一种简单易行的方法,但可能不是最优的方法。

    对于Rossmann商店销售预测任务,研究人员选择1和M之间的一个值(类别数量)-1,最大嵌入尺寸为10。例如,一周中的某天(7个值)的嵌入尺寸为6, 而商店ID(1115个值)的嵌入尺寸为10。但是,作者没有明确的选择1和M-1之间选择的规则。

    Jeremy Howard重建了Rossmann竞赛的解决方案,并提出了以下解决方案来选择嵌入尺寸:

     

    可视化嵌入

    嵌入的优点是可以将已经学习到的嵌入进行可视化处理,以显示哪些类别彼此相似。最流行的方法是t-SNE,它是一种降维技术,特别适用于高维数据集的可视化处理。最后,让我们列举两个简单的可视化嵌入的例子。以下是家用产品的可视化嵌入及其所属类别。类似的产品,如烤箱,冰箱和微波炉之间非常相似;充电器,电池和钻头等产品也是如此。


    家用产品的学习嵌入

    另一个例子是在本文前面提到的Rossmann销售预测任务中德国各州的学习嵌入。嵌入中各州之间的邻近性与其地理位置相似。 

     

    德国各州学习嵌入示例

    参考资料

    [1]Chen, T., & Guestrin, C. (2016, August). Xgboost: A scalable tree boosting system. In Proceedings of the 22nd acm sigkdd international conference on knowledge discovery and data mining (pp. 785–794). ACM.

    [2]De Brébisson, A., Simon, É., Auvolat, A., Vincent, P., & Bengio, Y. (2015). Artificial neural networks applied to taxi destination prediction. arXiv preprint arXiv:1508.00021.

    [3]Guo, C., & Berkhahn, F. (2016). Entity embeddings of categorical variables. arXiv preprint arXiv:1604.06737.


     以上为译文。

    文章原标题《Using Deep Learning for Structured Data with Entity Embeddings》,

    译者:Mags,审校:袁虎。

    原文链接

    阅读更多干货好文,请关注扫描以下二维码:



    展开全文
  • 前段时间在做点云深度学习网络课题时,随手在博客“ModelNet40 中加入自己的数据集”中放了两串代码,目的是方便自己的存取(当时不会GIT的菜鸟)。结果成了所写博客中访问最多,提问最多的博文(瑟瑟发抖)。近段...
  • 深度学习入门

    万次阅读 多人点赞 2017-11-05 21:23:46
    深度学习
  • 基于TensorFlow下深度学习数据分类

    千次阅读 2018-05-07 15:22:51
    基于TensorFlow下深度学习数据分类 本篇文章翻译原文地址为:http://xueshu.baidu.com/s?wd=paperuri%3A%28a4bd0706a55c0c0a24ce7dc68a33f9f2%29&filter=sc_long_sign&tn=SE_xueshusource_2kduw...
  • 结构表示的深度学习

    千次阅读 2020-12-11 18:42:07
    在这篇论文中,我们提出了一种新颖的方法来利用结构化数据进行机器学习。我们所提出的方法主要基于以图形式构造神经网络的模型表示和计算主题,这使得从具有显式和隐式模块结构的数据学习时可以改进泛化性能。 我们...
  • 知识抽取,即从不同来源、不同结构的数据中进行知识提取,形成知识(结构化数据)存入到知识图谱。大体的任务分类与对应技术如下图所示: 2 知识抽取的子任务 命名实体识别 检测: 北京是忙碌的城市。 [北京]: 实体 ...
  • 深度学习之图像分类

    万次阅读 多人点赞 2019-03-28 15:18:16
    图像分类,核心是从给定的分类集合中给图像分配一个标签的任务。实际上,这意味着我们的任务是分析一个输入图像并返回一个将图像分类的标签。标签总是来自预定义的可能类别集。 示例:我们假定一个可能的类别集...
  • 深度学习垃圾分类

    千次阅读 多人点赞 2020-05-18 13:10:55
    深度学习垃圾分类 介绍 这是一个基于深度学习的垃圾分类小工程,用深度残差网络构建 希望大家可以体验到深度学习带来的收获 工程地址:https://gitee.com/tang_zhen_chao/refuse_classification 软件架构 使用深度...
  • 摘要:解决深度学习数据的依赖问题和减少数据标注成本成为了业界的研究热点。本文将介绍以下几个研究方向:半监督/弱监督学习、数据合成、主动学习、自监督。 1. 引言 得益于深度学习的发展,许多计算机视觉任务...
  • 基于深度学习的时间序列分类[含代码]

    万次阅读 多人点赞 2019-03-12 18:10:12
    基于深度学习的时间序列分类引言数据集实验环境搭建实验设计实验代码实验结果 引言 目前,深度学习在计算机视觉和语音识别上有了非常广泛的应用,但是在工业应用方面还没有完善的体系,一方面缺乏数据集另一方缺乏...
  • 本文提出了一种新的深度学习分类模型——随机多模型深度学习(RMDL),该模型在诸多领域都达到了最佳效果。RMDL通过整合一系列深度学习框架解决了寻找既能使模型体系结构最优,又能提高模型鲁棒性、准确率的问题。...
  • 深度学习实战之垃圾分类

    万次阅读 多人点赞 2019-08-31 21:00:01
    然而我们在日常生活中认为对垃圾分类还是有些不知所措的,对干垃圾、湿垃圾……分的不是很清楚,由此我们就想到了使用深度学习的方法进行分类。 简介 本篇博文主要会带领大家进行数据的预处理、网络搭建、模型训练...
  • 目前图像方向,主要用深度学习进行分类,定位(回归),检测,那么她三主要区别是什么呢? ①分类:是什么? ②定位:在哪里?是什么?(单目标) ③检测:在哪里?分别是什么?(多目标) 根据不同的任务,我们...
  • 大数据深度学习下的车辆结构化——明景车辆结构化分析 车辆全特征结构化识别技术是计算机人工智能、图像处理、计算机视觉、模式识别等相关技术的综合应用。目前涉车涉驾案件的快速增长,以及车辆结构化、智慧...
  • 深度学习入门笔记(一):深度学习引言

    万次阅读 多人点赞 2019-09-09 18:02:57
    第一门课 神经网络和深度学习(Neural Networks and Deep Learning) 文章目录第一门课 神经网络和深度学习(Neural Networks and Deep Learning)第一周:深度学习引言(Introduction to Deep Learning)1.1 欢迎...
  • 深度学习常见算法的介绍和比较

    万次阅读 多人点赞 2018-02-08 22:00:06
    具体的话,深度学习是机器学习中的具有深层结构的神经网络算法,即机器学习>神经网络算法>深度神经网络(深度学习)。 关于深度学习的理论推导,太大太复杂,一些常见的深度学习算法本人也是模模糊糊的,看过好多次...
  • Halcon 深度学习分类模型介绍

    千次阅读 2020-05-10 16:58:51
    这些网络在使用前已经经过丰富的图像库训练过,在此基础上训练出的网络对于图像分类任务表现更好。接下来分别介绍Halcon提供的预训练网络。 pretrained_dl_classifier_compact.hdl模型 网络的优点是节省内存以及运行...
  • 什么是人工智能、机器学习、深度学习数据挖掘以及数据分析?本文尝试给出自己的理解和认知。
  • 什么是视频数据结构化?

    万次阅读 2018-08-30 12:12:27
    视频结构化是一种将视频内容中的重要信息进行结构化提取的技术,利用它对视频内容按照语义关系,采用时空分割、特征提取、对象识别、深度学习等处理手段,组织成可供计算机和人理解的文本信息或可视化图形信息。...
  • 基于深度学习时间序列分类研究综述[论文阅读]

    万次阅读 多人点赞 2019-03-15 10:22:22
    时间序列分类研究简介核心论文写在前面的话原文概述摘要1引言2背景2.1时间序列分类2.2基于深度学习的时间序列分类2.3生成性或判别性方法生成模型判别模型3方法3.1为什么判别的端到端方法?3.2方法比较完全卷积神经...
  • 高光谱图像(HSI)+深度学习 分类

    千次阅读 2020-03-25 17:23:32
    高光谱图像(HSI)+深度学习 分类 背景 添加链接描述 高光谱的图像具有光谱信息和空间维度信息。光谱维度信息具有信息冗余(需要对原始光谱信息进行降维分布),空间信息可利用传统的CNN卷积。 目前的高光谱图像数据...
  • 基于深度学习的CIFAR10图像分类实现

    千次阅读 热门讨论 2020-05-05 14:04:57
    基于深度学习的CIFAR10图像分类 摘要:近年来,随着深度学习的迅速发展和崛起...通过利用Google的深度学习框架Tensorflow,搭建新的卷积网络结构,提出了基于卷积神经网络的CIFAR10图像分类识别算法,主要参照经典...
  • 基于深度学习的遥感图像分类总概

    千次阅读 2018-12-12 14:33:00
    传统的分类方法分两种:监督分类和非监督分类。监督分类要求对所要分类的地区必须要有先验的类别知识,即先要从所研究地区中选择出所有要区分的各类地物的训练区,用于建立判别函数。常用的监督分类方法有:K近邻法...
  • AI智能垃圾分类主要通过构建基于深度学习技术的图像分类模型,实现垃圾图片类别的精准识别重点处理图片分类问题。 采用深圳市垃圾分类标准,输出该物品属于可回收物、厨余垃圾、有害垃圾和其他垃圾分...
  • 深度学习网络结构

    千次阅读 2017-09-12 11:42:57
    深度学习初探——入门DL主流框架 作者 实验楼 关注 2017.03.09 14:30 字数 2541 阅读 3294评论 0喜欢 2 ...这个抽象的结果即是数据一种表达,而深度学习也可看成表达学习(表征学习)的一种方法,深度学习的好
  • 论文来源: Comparison of Deep Learning With ...机器学习方法在医药研究中已经应用了几十年。与贝叶斯方法相结合的指纹类型分子描述符的相对易用性和可用性使得该方法广泛应用于与药物发现相关的各种端点阵列...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 107,082
精华内容 42,832
关键字:

结构化数据深度学习分类