深度学习-----学习笔记(二)(修仙~~~ing)

2023-12-05 20:59
文章标签 学习 笔记 深度 ing 修仙

本文主要是介绍深度学习-----学习笔记(二)(修仙~~~ing),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、什么是人工智能?
    • 1. 达特茅斯
    • 2.三大主义与三大流派
    • 3.四个难点
  • 二、机器学习算法
    • 1. 监督学习
    • 2. 非监督学习
    • 3. 强化学习
  • 三、神经网络(上)
    • 1. 简单介绍
    • 2.激活函数
      • 2.1 阶跃函数
        • 2.1.1概念
        • 2.1.2图形
        • 2.1.3代码实现
      • 2.2 Sigmoid函数
        • 2.2.1概念
        • 2.2.2图形
        • 2.2.3代码实现
      • 2.3 ReLu函数
        • 2.3.1概念
        • 2.3.2图形
        • 2.3.3代码实现
      • 2.4 tanh函数
        • 2.4.1概念
        • 2.4.2图形
        • 2.4.3代码实现
  • 总结

前言

  笔记(一)中,机器学习的分类叙述不够完整。这里做下补充。此笔记先大概叙述下人工智能,再完善下机器学习的介绍,再从笔记(一)的感知机接起介绍下神经网络的一部分。(下半部分后边在写)(仅代表笔者所了解到的,有问题可讨论)


一、什么是人工智能?

  阿兰·麦席森·图灵和约翰·冯·诺依曼两位猛男有着无与伦比的影响力。
  图灵测试(在测试者与被测试者互不接触的情况下,按照某种方式向被测试者随意提问,如果在长时间的问答里,根据这些问答的结果没有办法判断被测试者是人还是机器人,那么就认为这台计算机能够像人一样思维)直接从行为表现上判断一个机器是否具有人类的思维。这也是实现人工智能的主要流派之一“符号主义”的经典实验。
  约翰·冯·诺依曼生平更是传奇,他的遗作《计算机与人脑》展现出猛男的与众不同。
  “神经系统是这样一台计算机,它在一个相当低的准确度水平上,进行着非常复杂的工作。”------《计算机与人脑》

1. 达特茅斯

1956年夏在达特茅斯与会者重点讨论了七个方面问题: 1.自动编程计算机
                          2.自然语言理解
                          3.神经网络
                          4.计算复杂度
                          5.自我改进
                          6.抽象
                          7.随机性与创造力
  他们将对人工智能的定义归为四类:第一类强调像人一样思考(有头脑的机器);第二类强调像人一样行动(如何让计算机做哪些人比机器更擅长的事情);第三类强调合理的思考(使用计算模型研究智力);第四类强调合理的行动()。
  2019年经济合作与发展组织发布全球首个政府间人工智能标准建议中认为:人工智能系统(AI System)是一个基于机器的系统,对于一组给定的人为目标,可以做出影响真实或虚拟环境的预测、建议或决策。

2.三大主义与三大流派

  将机器与人相比,人工智能大体可分为运算智能感知智能认知智能三个层次。

与人类能力类比目前水平
运算智能快速计算和记忆存储能力机器超过人类
感知智能视觉、听觉、触觉等感知能力人与机器相当、但机器具备诸多人类感官之外的能力
认知智能分析、思考、理解、判断的能力机器不如人类

  围绕“如何判断机器具备人类的智能”,可将人工智能的实现路径分为三个主要流派:

三大流派介绍
符号主义认为只要通过符号计算实现相应功能,则可视为具备现实世界上的某种能力。eg:图灵测试
连接主义认为大脑是智能的基础,实现智能必须通过模拟大脑里的神经网络和连接机制。eg:深度学习
行为主义认为智能取决于感知和行动,不需要知识、表示和推理,只需要行动具备智能特征。eg:六足机器人

  而深度学习大体上就是用人类的数学知识与计算机算法设计一种架构,在结合尽可能多的训练数据、优化的计算方法,以及计算机大规模运算能力去调整内部参数配置,尽可能逼近问题目标的方法。
  神经网络就像是一个集成的贴合实际(理论上)的非线性函数,反向学习得到模型,在进行正向的推理。这个复杂网络的每层都可以进行参数的调整与结果的的计算。

3.四个难点

   当前,人工智能所采用的深度学习是利用机器算法模拟人脑对知识学习、吸收与理解并掌握运用的训练过程。这就需要大量的数据(重复的确定性事件毫无意义)和处理这大量数据的能力。而这两者的飞速进步又促进了深度学习的发展。
  但以深度学习为代表的“第三波人工智能”还是存在四个问题。

  1. 过分依赖数据量
  2. 算法黑箱(基于参数调整来进行人工智能,会导致知其然却不知其所以然,遇到一些问题就无法解释。)
  3. 能耗激增
  4. 场景锁定(过于依赖于特定的场景)

二、机器学习算法

  机器学习的课题就是让计算机去算参数。学习是确定合适的参数的过程,而人要做的是思考模型,并把训练数据交给计算机。
  机器学习算法大致可以分为三种:监督学习(如分类、回归)、非监督学习(如聚类、降维)和强化学习

1. 监督学习

  从一个标记好的数据集中进行学习。这个数据集中每个样本特征都是对欲求情景的描述,标记则是应该要执行的正确动作。 例如,一个小孩没见过海和山,你事先告诉他这两者的特点(特征),他运用这些特点将两者分辨出来。

2. 非监督学习

  输入的数据集中没有标记,只依靠这组数据集,在该数据集内寻找规律。在发现某种规律后,可按自然的聚集性分类,但不以划分数据集为目的。它的设计思想是,让计算机自己学习做法。还是那个小孩,但这次你没告诉他,他自己寻找规律,将山和海区分开来。

3. 强化学习

  当前在自动驾驶规划与过程中最热门的学习方法。强化学习是智能体(一个可以观察自己周围环境,并做出行动达到目标的系统)如何将它所处的环境和在此环境下应采取的行为联系起来,以求获得最大的累积回报。
  强化学习是从环境状态到动作的映射的学习,通常把这个映射称为策略(Policy)。
  在强化学习中训练的算法都能感知自己的环境,并根据目标来指导自己的行为。然后每完成一个训练阶段环境就会根据此算法的行为返回一个信号,可以记为Reward。Reward定义了在该环境下执行此行为的好坏。这样,训练的算法就可以根据Reward的值来调整自己的Policy。
  强化学习是边获得样例、边学习,在获得样例后更新模型,再根据此模型进行一次行动,然后获得了一个Reward信号,再根据Reward信号再次更新模型,然后不断重复这个过程直到模型收敛。
   总而言之,强化学习与其他机器学习算法不同的地方在:强化学习没有监督者,只有一个Reward信号且而此反馈信号是延迟的,不是立即生成的。Agent的行为也会影响之后一系列的数据。是一种不断与环境交互的试错学习。

三、神经网络(上)

  感知机的参数(权重和偏置)是由人设定的,而神经网络的一个重要性质就是它可以自动学习符合预期的参数。

1. 简单介绍

  可以用下图表示神经网络,最左边称为输入层,最右边称为输出层,中间称为中间层或者隐藏层
在这里插入图片描述
  感知机得到一个公式
y = { 0 ( ω x 1 + ω x 2 + b ≤ θ ) 1 ( ω x 1 + ω x 2 + b > θ ) y=\left\{ \begin{aligned} 0 (& \ ωx_1+ωx_2+b\leθ) \\ 1 (& \ ωx_1+ωx_2+b>θ) \\ \end{aligned} \right. y={0(1( ωx1+ωx2+bθ) ωx1+ωx2+b>θ)
  可以进一步简化这个公式, y = h ( ω x 1 + ω x 2 + b ) y=h(ωx_1+ωx_2+b) y=hωx1+ωx2+b
  这样,将ωx1+ωx2+b看作自变量就能得到一个h(x)的新函数:
h ( x ) = { 0 ( x ≤ θ ) 1 ( x > θ ) h(x)=\left\{ \begin{aligned} 0 (x\leθ) \\ 1 (x>θ) \\ \end{aligned} \right. h(x)={0(xθ)1(x>θ)
  这个h(x)函数就可以称之为激活函数。激活函数将输入信号经过计算后的总和转换为输出信号表示为0和1,即对于函数h(x)而言在x≤θ时为0,在x>θ时为1。这就相当于由x来对h进行激活(0:未激活;1:激活)。

2.激活函数

  激活函数使用较多的有阶跃函数、Sigmoid函数、ReLu函数、tanh函数等等。

2.1 阶跃函数

2.1.1概念

  三.1里的h(x)以阈值θ为界,一旦超过阈值,就切换输出,这样的函数就叫做阶跃函数。

2.1.2图形

在这里插入图片描述

2.1.3代码实现
def step_function(x):if x>0:return 1elsereturn 0

2.2 Sigmoid函数

2.2.1概念

  Sigmoid函数数学表达式如下:
h ( x ) = 1 1 + e − x h(x)=\frac{1}{1+e^{-x}} h(x)=1+ex1

2.2.2图形

在这里插入图片描述

  Sigmoid函数是一条平滑的曲线,典型的非线性函数,输出随输入是连续变化,这和阶跃函数有着很大的区别。也正是因为这个特性,神经网络才有了继续的意义。因为需要反向学习来计算参数,而反向学习需要用到梯度,阶跃函数在很大情况下梯度为0,使损失函数的值不会有任何变化。

2.2.3代码实现
def sigmoid_function(x):return 1/(1+np.exp(-x))  

2.3 ReLu函数

2.3.1概念

  Sigmoid函数数学表达式如下:
h ( x ) = { x ( x > 0 ) 0 ( x ≤ 0 ) h(x)=\left\{ \begin{aligned} x (x>0) \\ 0 (x\le0) \\ \end{aligned} \right. h(x)={x(x>0)0(x0)

2.3.2图形

在这里插入图片描述

2.3.3代码实现
def relu_function(x):return np.maximum(0,x)

2.4 tanh函数

2.4.1概念

  双曲线函数,和Sigmoid函数同为S形函数,但tanh函数关于原点(0,0)对称。而Sigmoid函数关于(0,0.5)对称。
h ( x ) = e x − e − x e x + e − x h(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}} h(x)=ex+exexex
  其实
t a n h ( x ) = 2 ∗ s i g m o i d ( 2 ∗ x ) − 1 tanh(x)=2*sigmoid(2*x)-1 tanh(x)=2sigmoid(2x)1

2.4.2图形

在这里插入图片描述

2.4.3代码实现
def tanh_function(x):return (np.exp(x)-np.exp(-x))/(np.exp(x)+np.exp(-x))  

  或者

def tanh_function(x):return 2*sigmoid_function(2*x)-1

总结

本节参考于斋藤康毅的两部作品及颠覆性军事技术-人工智能一书。

这篇关于深度学习-----学习笔记(二)(修仙~~~ing)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/459112

相关文章

SQL 注入攻击(SQL Injection)原理、利用方式与防御策略深度解析

《SQL注入攻击(SQLInjection)原理、利用方式与防御策略深度解析》本文将从SQL注入的基本原理、攻击方式、常见利用手法,到企业级防御方案进行全面讲解,以帮助开发者和安全人员更系统地理解... 目录一、前言二、SQL 注入攻击的基本概念三、SQL 注入常见类型分析1. 基于错误回显的注入(Erro

Java枚举类型深度详解

《Java枚举类型深度详解》Java的枚举类型(enum)是一种强大的工具,它不仅可以让你的代码更简洁、可读,而且通过类型安全、常量集合、方法重写和接口实现等特性,使得枚举在很多场景下都非常有用,本文... 目录前言1. enum关键字的使用:定义枚举类型什么是枚举类型?如何定义枚举类型?使用枚举类型:2.

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Java MCP 的鉴权深度解析

《JavaMCP的鉴权深度解析》文章介绍JavaMCP鉴权的实现方式,指出客户端可通过queryString、header或env传递鉴权信息,服务器端支持工具单独鉴权、过滤器集中鉴权及启动时鉴权... 目录一、MCP Client 侧(负责传递,比较简单)(1)常见的 mcpServers json 配置

Maven中生命周期深度解析与实战指南

《Maven中生命周期深度解析与实战指南》这篇文章主要为大家详细介绍了Maven生命周期实战指南,包含核心概念、阶段详解、SpringBoot特化场景及企业级实践建议,希望对大家有一定的帮助... 目录一、Maven 生命周期哲学二、default生命周期核心阶段详解(高频使用)三、clean生命周期核心阶