监督学习型神经网络

2022-09-01 12:01:31 浏览数 (3)

大家好,又见面了,我是你们的朋友全栈君。

朋友们,如需转载请标明出处:http://blog.csdn.net/jiangjunshow

什么是监督学习?

简单的回答是:判断是否是监督学习,就看输入数据是否有标签。输入数据有标签,则为有监督学习,没标签则为无监督学习。

对于上面的简单回答,如果你看不懂,是正常的!下面我给出详细回答,如果你还是不明白,那么…也是正常的。因为有些概念要被接受是需要时间的!坚持不懈地看我的文章,不知不觉中你就明白了!

要详细解释什么是监督学习,那么先要明白“什么是学习?”。一个成语就可概括:举一反三。此处以高考为例,高考的题目在上考场前我们未必做过,但在高中三年我们做过很多很多题目,由此学会了解题方法,因此考场上面对陌生问题也可以算出答案。机器学习的思路也类似:我们利用一些训练数据(高中的大量题库),使机器能够总结出一些规律(总结出解题方法),然后用这些规律来分析未知数据(用解题方法来解答高考题目)。

分类(classification)这种机器学习算法就是一种监督学习。对于分类,输入的训练数据有特征(feature),有标签(label)。也就是我们前面文章中的输入x和输出y。每一个x样本都对应着一个y(输出)标签。所谓的学习,其本质就是找到特征和标签间的关系(mapping),也就是找规律。这样当有特征而无标签的未知数据输入时,我们就可以通过已有的关系得到未知数据标签,即根据新数据进行预测。在上述的分类过程中,如果所有训练数据都有标签,则为有监督学习(supervised learning)。如果数据没有标签,显然就是无监督学习(unsupervised learning),即聚类(clustering)。

目前分类算法(监督学习)的效果还是不错的,而相对来讲,聚类算法(无监督学习)就有些惨不忍睹了。确实,无监督学习本身的特点使其难以得到如分类一样近乎完美的结果。这也正如我们在高中做题,答案(标签)是非常重要的,假设两个完全相同的人进入高中,一个正常学习,另一人做的所有题目都没有答案,那么想必第一个人高考会发挥很好,第二个人会发…疯。

这时各位可能要问,既然监督学习如此之好,非监督学习如此之不靠谱,那为何我们还可以容忍非监督学习的存在?因为在实际应用中,标签的获取常常需要极大的人工工作量,有时甚至非常困难。

但是我觉得非监督学习非常之重要!要想让人工智能更加聪明,就必须使它具有更强的自学能力。我预见的未来将是这样的:先用监督学习教会人工智能体一些基本的常识,然后让它基于这些常识去自学去探索世界。当实现这个架构后,人工智能体将会超越人类。

但到目前为止,几乎所有由人工智能创造的经济价值都是通过监督学习型神经网络实现的。例如广告预测,这可能是最有利可图的人工智能应用了,它也许不是最鼓舞人心的,但肯定是非常有利可图的,通过输入一些关于用户的信息x,神经网络就能预测你是否会点击某个广告(给出输出y来指示某个广告),所以当你看到你朋友,或男朋友,或女朋友手机电脑上面都是些黄色广告时,你基本上可以断定TA的“性趣很浓”,也之所以我一般不会给别人用我的手机或电脑。计算机视觉在过去几年也取得了很大的进步,主要是由于深度学习。您可以输入人脸图像,神经网络会给出这个人的姓名。在语音识别方面的进展也非常激动人心,我们可以输入一段音频到神经网络,相应的文字就被输出来了。机器翻译也取得了巨大的进步,你可以输入英文句子,直接输出中文句子。在自动驾驶中,您可以输入车辆前方的图片以及雷达中的一些信息,基于此,神经网络将告诉您其它汽车的位置(这是自动驾驶系统的关键组成部分)。因此,通过神经网络进行的许多价值创造当前都是通过监督学习来实现的——巧妙地构造数据集,选择什么应该是x,什么应该是y,然后让神经网络来学习这个数据集。

另外再补充些知识点。神经网络除了按监督学习和非监督学习来分类外,还按结构来分类。不同结构的神经网络被用于不同的应用程序中。例如,在之前看到的房价预测应用中,我们使用的是标准的神经网络结构,广告预测也是一个相对标准的神经网络。对于图像应用程序,我们经常使用卷积神经网络CNN。对于序列数据应用程序一般使用递归神经网络RNN(例如音频就属于序列数据,是随着时间一段一段表述的,例如英语、汉语都是随着时间一个字一个单词来表述的)。对于更复杂的应用,比如自动驾驶,里面有图像所以需要CNN卷积神经网络,而雷达信息则需要其它类型的神经网络,这就导致了混合的神经网络架构。

为了更具体一点,上面分别给出了各种不同神经网络的结构图。依次是,标准神经网络SNN, 卷积神经网络CNN,递归神经网络RNN。稍后我会解释这些图的含义以及如何实现它。卷积网络通常被用于图像数据。递归神经网络被用于序列数据。

你也可能听说过机器学习中将数据分为结构化数据和非结构化数据。结构化数据主要表示数据库数据。例如,在房价预测中,您可能会有一个数据库告诉您卧室的大小和数量。又如预测用户是否点击广告时,您可能会获得有关用户的信息,例如年龄,广告的一些信息。所谓结构化数据,意味着每个特征,如房子的大小,卧室的数量或用户的年龄,是具有非常明确的含义的。相比之下,非结构化数据指的是音频,图像。这里的特征可能是图像中的像素值或文本中的单个单词,没有明确的含义。与结构化数据相比,计算机更难以理解非结构化数据。而人类已经进化得非常善于理解音频和图像这些非结构化数据。但这一两年由于深度学习的兴起,计算机对非结构化的理解能力越来越强了。人们在听到有关神经网络对非结构化数据的成功时,例如当神经网络识别出一只猫时,人们都很兴奋。但事实证明,神经网络正在创造的许多短期经济价值其实是在结构化数据上的,比如广告系统。所以在这个课程中,我将介绍的很多技术都将适用于结构化数据和非结构化数据。为了解释算法,在示例中我将会更多的使用非结构化数据。但是,将来在您自己的团队中应用神经网络时,我希望您应该对结构化和非结构化数据都重视。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140220.html原文链接:https://javaforall.cn

0 人点赞