[深度学习入门]基于Python的理论与实现[感知机、神经网络、误差反向传播法及相关技巧](一)

简介: 笔记

一、前言


 本文是本人在认真学习完[日]斋藤康毅所著《深度学习入门-基于Python的理论与实现》(因为封面上有条鱼,以下皆用《鱼书》代称之)后的学习心得与体会。至于为什么要把写成文字记录下来呢,一是为了我后续的学习方便快速地回忆之前的知识点,一是为了给同样在学习这本《鱼书》的朋友们提供一些帮助。


二、概述


 该书一共包含八个章节,暂且把它分成三大部分,分别涉及到:

 部分一:Python入门、感知机;

 部分二:神经网络、神经网络的学习、误差反向传播法、与学习相关的技巧(我觉得部分二是其精华所在)

 部分三:卷积神经网络、深度学习


三、正文部分


第一章:Python入门

 该章节主要介绍了Python基础内容,从Python的安装到Python基础的语法介绍,再到机器学习、深度学习中常用库:Numpy(用于数据的高效计算)、Matplotlib(用于图形的绘制)的介绍。

 可以选择安装Anaconda,它会自动安装一个基本的python,该python下已经装好了一大堆工具包,之后用到的超过一半的包不需要额外再去从pip上安装,之后也可以通过Anaconda下载一些第三方库。


第二章:感知机

 感知机是神经网络的起源算法。

 感知机接收多个输入信号(x1、x2 …),输出一个信号(只有1/0两种取值)。不同的输入信号对应不同的权重(w1、w2 …),当接收的信号总和(w1x1+w2x2 …)大于某个阈值(θ)时,才会输出1。

1.png2.png

用于调整输出信号为1的程度的阈值θ挪到公式左边,把(-θ)用b代替,通常叫做偏置

3.png

可以利用感知机构建逻辑电路:

 与门:仅在两个输入均为1时输出1,否则输出0。感知机构建条件很多,比如:(w1, w2, θ) = (0.5, 0.5, 0.7)。

 与非门:跟与门相反,仅在两个输入均为1时输出0,否则输出1。感知机构建条件很多,比如:(w1, w2, θ) = (-0.5, -0.5, -0.7)。

 或门:只要有一个输入信号是1,输出就为1。感知机构建条件很多,比如:(w1, w2, θ) = (1, 1, 0.7)。

 然而单层感知机无法实现异或门(仅当两个输入中的一方为1时,才会输出1)。

4.png

将上图转换为下图:

5.png

感知机的局限性就是它只能表示由一条直线分割的空间(线性空间)。y用○表示0,△表示1。感知机就是一条分割○△的直线。

6.png

要分开上图的○△,只能使用曲线分割出非线形空间。

 叠加感知机的层数可以来表示异或门。

7.png8.png

与门、与非门、或门均为单层感知机,而异或门是2层感知机。叠加了多层的感知机也称为多层感知机

  通过叠加层(加深层),感知机能进行更加灵活的表示(能够进行非线性的表示


第三章:神经网络

  神经网络和感知机最大的区别,其实就是激活函数不同。

9.png

上图就是一个简单的神经网络,最左侧一列为输入层,最右侧一列为输出层,中间一列为中间层(隐藏层)。

 几种激活函数:

 阶跃函数:随着输入函数不同,在阈值处发生急剧性的变化。感知机的激活函数就是它。

10.png

sigmoid函数:输出随着输入发生连续性的变化。

11.png

sigmoid函数的平滑性对神经网络的学习具有重要意义。

 相对于阶跃函数只能返回0或1,sigmoid函数可以返回0.731 、0.880等实数。

12.png

ReLU函数:在输入大于0时,直接输出该值;在输入小于等于0时,输出0。

13.png

14.png15.png

上述几种激活函数的代码实现(common/functions.py):

16.png17.png



相关文章
|
4天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
4天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
4天前
|
设计模式 缓存 开发框架
Python中的装饰器:从入门到实践####
本文深入探讨了Python中装饰器的工作原理与应用,通过具体案例展示了如何利用装饰器增强函数功能、提高代码复用性和可读性。读者将学习到装饰器的基本概念、实现方法及其在实际项目开发中的实用技巧。 ####
17 3
|
机器学习/深度学习 算法 测试技术
可变多隐层神经网络的python实现
说明:这是我对网上代码的改写版本,目的是使它跟前一篇提到的使用方法尽量一致,用起来更直观些。   此神经网络有两个特点: 1、灵活性 非常灵活,隐藏层的数目是可以设置的,隐藏层的激活函数也是可以设置的   2、扩展性 扩展性非常好。
1235 0
|
4天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
6天前
|
设计模式 算法 搜索推荐
Python编程中的设计模式:优雅解决复杂问题的钥匙####
本文将探讨Python编程中几种核心设计模式的应用实例与优势,不涉及具体代码示例,而是聚焦于每种模式背后的设计理念、适用场景及其如何促进代码的可维护性和扩展性。通过理解这些设计模式,开发者可以更加高效地构建软件系统,实现代码复用,提升项目质量。 ####
|
5天前
|
机器学习/深度学习 存储 算法
探索Python编程:从基础到高级应用
【10月更文挑战第38天】本文旨在引导读者从Python的基础知识出发,逐渐深入到高级编程概念。通过简明的语言和实际代码示例,我们将一起探索这门语言的魅力和潜力,理解它如何帮助解决现实问题,并启发我们思考编程在现代社会中的作用和意义。
|
6天前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
|
6天前
|
人工智能 数据挖掘 程序员
Python编程入门:从零到英雄
【10月更文挑战第37天】本文将引导你走进Python编程的世界,无论你是初学者还是有一定基础的开发者,都能从中受益。我们将从最基础的语法开始讲解,逐步深入到更复杂的主题,如数据结构、面向对象编程和网络编程等。通过本文的学习,你将能够编写出自己的Python程序,实现各种功能。让我们一起踏上Python编程之旅吧!