神经网络详情|学习笔记

简介: 快速学习神经网络详情

开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践神经网络详情】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1067/detail/15457


神经网络详情

 

内容介绍

一、复习

二、数据和结构

 

一、复习

之前已经讲过神经网络十分重要,现在随着时代的发展,每一届研究生总归有一届研究生开始以神经网络录取为主,每一届是有差别的,那么,这一届要完全这样开始,可能有点难度。Python 有的同学可能刚开始学习,随着时代发展,有很多大学有可能以后 python 课都要开设。

到此时,研究生的数据挖掘。传统的数据挖掘方法基本上和现在一样,最多介绍下神经网络,主要的内容是深度学习。上次已经有了神经网络的简介,讲解了神经网络的意思。

接下来要用 python 的方法来加深一下神经网络的学习。总共有七个小节的内容。

第一个是神经网络的揭秘。这里有一个学习技巧为代码驱动式学习,是在国际上流行的。国外有很多硕士博士本身的硕士专业也不是全部学过机械学习。那么他是怎么在博士进行深度学习的呢?如果认为首先要看这些复杂的算法原理,要看明白,才有信心学这个方向,则绝对是有问题的。因为很多算法很抽象,也许算法学到一半就放弃了。那怎么办?有一个技巧是代码驱动式学习。先用代码跑通,然后运行,最好能用实验做起来,然后反过来理解这些算法。所以跟学硕硕士交流,要想把机械学习进一步学好,如果有捷径,则只能是代码驱动式学习。能用 python 最好用 python。为什么没办法靠工具呢?

因为任何一个工具都是滞后的,都是公司开发出来的,新的算法层出不穷,每天都有人在尝试。要用工具就远远滞后了。现在 python 很热,因为要学习新语言,研究新算法。如果掌握了编程工具,有很多人很聪明,对算法很快就理解了,并且写出 demol,而且这些人愿意做雷锋,把他的代码贡献在互联网上面。用 python 最大的好处是可以用网站,有这样一个网站 github.com,上面有各种语言,比如 python 语言占的比重很大,就有很多人提供了这样的代码,只要有本领把代码运行起来,然后再吸收消化。写论文的话就去这个网站上找代码,比如现在要做自动问答,如果 python 很熟练的话,可以去 github 上找相似的代码,把代码钻研透,很多代码是英文的,把它翻译成中文,现在还有很多强化学习的方法,对图片的语义分割,图片里面看图说话,只要能看懂代码,再结合例子,要做论文的话,在本专业里都是新的。要学机械学习深度学习,就一个技巧,代码驱动式学习。不要找其他的路径了,这个路径是可行的,其他的路径除非你有非常强的逻辑,就比如有些外国人对代码的构造能力很强。很多东西刚出来,代码就写的非常好。当然需要有时间消化代码。现在的研究生现在越来越觉得如果 python 代码不强大的话,后面就很难组织语言。

 

二、数据和结构

神经网络有多层结构。

image.png

如上图所示,数据有 Y 和 y,把二维的样本数据分成 Y 和 y。y 的取值如果是型则为回归,支付型则为分类。然而没有 y,样本和样本本之间的关系,如果看属性关系的话,关系规则。这个很简单,初学者很容易把握。以前有专硕上完课后,因为数据挖掘课讲授大约十多年了,问他们什么是有监督,什么是无监督。他们回答不出来,因为十多年的技术,所以当时特别感谢一个系主任叫范老师。他特别能接受新的东西,当时老师在公司做的时候,跟范老师说数据挖掘太重要了,所以看了范老师的课,叫做挖据与商业制度。当时范老师很支持,还没有大数据宣传时,范老师就支持数据挖掘和商业制度,所以这门课也有将近十年的历史。早年同学们觉得很难学,他的定义、X Y 的形式如下图所示。

维数是变量的指标、属性,如果目标是一个值的话,我们要预测一个数值的话,那这个维数就是一,是二元分类的话,也是一,表示一个0一个1,一开始要理解数据。举例,我们要通过输入数据 X 来预测输出数据 y,假设 X 表睡眠时间和学习时间,y 表示测试成绩。X 是一行,代表一个实例,这一行有两个值,一个是睡眠时间,一个是学习时间。

In [1]:

# X=(睡眠时间小时, 学习时间小时),y =测试成绩,用 numpy 的数组来存储 import numpy as np 这是 python 里面一个强大的包,里面有数据非常高强大,

X=np. array(([3,5], [5, 1], [10,2]), dtype-float) X 有两个值,是两列,来构造三条记录,数据类型是 float,np 构造起来很方便,

y = np.array(([75], [82], [93]), dtype=float) y 是三个值,第一个人75分,第二个人82分,第三个人93分,代码驱动式的学习,python 代码的熟练程度很重要,这个代码很简单,如果要看复杂的代码要看明白所以 python 的基础很重要。<h1 align ='center'>神经网络揭秘</h1>

<h2 align = ' center'> Part 1: 数据和结构</h2>

github.com

运行一下,显示一下 X 的值,是三行两列,构造了 X 和 y。

In [2]: X

Out[2]:array([[ 3.,5. ],

[ 5.,1.],

[10.,2.]])

y 是向量,也是二维的,三行一列。

In [3]: y

0ut[3]:array([[75. ],

[82.],

[93. ]])

下面有一些文字介绍,需要仔细看看。讲课的代码案例,是讲 python 基础最清楚的案例,这里面有些是老师翻译的,没有打磨和斟酌,翻译没有针对性很强,可以自己改。现在我们有了一些数据(包括其存储结构),我们可以预测下次你花多少时间在睡眠和学习上,然后你可能取得的考试成绩。这是有监督的回归问题。可以把 y 分成等级,A B C,那就是分类问题。为什么?如果预测的是你的考试等级,那是什么问题?

有许多机器学习的方法可以解决这个问题,这里我们要用的方法被称作人工神经网络(ANN, artificial neural network)。它里面是分层的,每一层都是神经元。所以后面想办法构造每一层的神经元。它的工作原理类似人类大脑中的神经元,最近已经解决了一些非常难的问题。神经网络深度学习,特别要注意在其他算法里面可能不做的,但是在神经网络里面一定要做的。

在我们把数据送到模型之前,我们需要将数据做归一化处理,即将数据的值处理成0到1之间的数。以后做文本和图像数据的话,要做到零和一之间。为什么?

In[4]: X = X/np. amax(X, axis=0)用 np 里面一个函数,最大值,除以 X 里面最大值以后,按照行列把里面每一个值做规划处理,X 是一个二维表,一个操纵,里面所有的东西都规划处理,所以 python 很强大。规划后的值,都已经做了规划处理。这里面有1,y 也规划处理了。

y = y/100#Max test score is 100

In[5]:X

Out[5]:array([[0.3,1. ],

[0.5,0.2],

[1.,0.4]])

In[5]:У

0ut[5]:array([[0. 75],

[0. 82],

[0.93]])

下面来研究神经网络的结构。神经网络输入层有两个神经元,一个睡眠时间,一个学习时间。现在我们可以来构建本例需要的神经网络。它得有2个输入, 输出是 y,学习成绩,所以是一个输出。在输入和输出之间的任何层,称为隐藏层。近年来,研究者已经构建了多隐藏层,它们被称为深度信念网络,从而产生了目前最热门的深度学习的概念。本例中我们只用1个隐藏层,含3个神经元。一般隐藏层的神经元要比输入层多一点。除非本身的输入就很多了,比如做一个图片处理,假如做的图片大小是218×218,那隐藏层的神经元有多大呢?隐藏层就不要这么大了。218×218它的像素四万多,每一个像素可以接受一个,作为一个输入,所以输入层有几万个神经元。

In[6]:

from IPython. display import Image

i = Image (filename=' images/ simpleNetwork. png' )

Out[6]:

在上图中,有两个神经元,一个是睡眠时间,另一个是学习时间,绿色的是输出 y,y 上面带个帽子是预测值,一层一层往前传,最后通过激活函数,得到一个预测值,真实的 y 再样本里。最后有个误差,即真实的 y 和 y hut 的差值,是误差,用误差的平方表示。圆圈代表神经元,边代表突触。模拟人的神经网络。神经网络里面有突触和数突。把他简化成图。

突触所做的工作较简单就是将获得输入数据乘以一个特殊的权重,然后再输出这个结果。神经元的工作稍微有点复杂,它将与它相连的所有突触的输出加起来后应用于一个激活函数。特定的激活函数可以让神经网络建模复杂的非线性模式。下面我们来用Python来构建我们的神经网络。

相关文章
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
368 0
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
359 0
|
Ubuntu 网络安全 图形学
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
在Ubuntu 20.04系统中解决网络图标消失和无法连接有线网络问题的方法,其中第三种方法通过检查并确保Windows防火墙中相关服务开启后成功恢复了网络连接。
4618 0
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
|
存储 算法 网络虚拟化
【计算机网络】学习笔记,第三篇:数据链路层
现在的光纤宽带接入 FTTx 都要使用 PPPoE 的方式进行接入。在 PPPoE 弹出的窗口中键入在网络运营商购买的用户名和密码,就可以进行宽带上网了 利用 ADSL 进行宽带上网时,从用户个人电脑到家中的 ADSL 调制解调器之间,也是使用 RJ-45 和 5 类线(即以太网使用的网线)进行连接的,并且也是使用 PPPoE 弹出的窗口进行拨号连接的
480 5
|
机器学习/深度学习 计算机视觉 文件存储
【轻量化网络系列(3)】MobileNetV3论文超详细解读(翻译 +学习笔记+代码实现)
【轻量化网络系列(3)】MobileNetV3论文超详细解读(翻译 +学习笔记+代码实现)
6425 0
【轻量化网络系列(3)】MobileNetV3论文超详细解读(翻译 +学习笔记+代码实现)
|
机器学习/深度学习 数据可视化 Linux
Seaborn可视化学习笔记(一):可视化神经网络权重分布情况
这篇文章是关于如何使用Seaborn库来可视化神经网络权重分布的教程,包括函数信息、测试代码和实际应用示例。
349 0
|
机器学习/深度学习 自然语言处理 并行计算
【深度学习+面经】Transformer 网络学习笔记
Transformer模型的核心概念、优缺点以及在多个领域的应用,并提供了针对Transformer架构的面试问题及答案。
744 2
|
监控 Java 数据库连接
【后台开发】TinyWebser学习笔记(1)网络编程基础知识
【后台开发】TinyWebser学习笔记(1)网络编程基础知识
160 3
|
域名解析 缓存 网络协议
【计算机网络基础篇】学习笔记系列之二《游览器输入URL后发生了什么?》
【计算机网络基础篇】学习笔记系列之二《游览器输入URL后发生了什么?》
270 3
|
消息中间件 网络协议 算法
【计算机网络基础篇】学习笔记系列之一《TCP/IP 网络模型》
【计算机网络基础篇】学习笔记系列之一《TCP/IP 网络模型》
213 1

热门文章

最新文章