机器学习相关笔记

人工智能方面的东西,神经网络,机器学习
TensorFlow
3559
npu

CUDA

Linux系统:麒麟试用版下载

(Ubuntu kylin)
https://www.ubuntukylin.com/index.php?lang=en
最新版本 19.10

python 库下载

Unofficial Windows Binaries for Python Extension Packages(百度搜索一下)

机器学习

机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

它是人工智能的核心,是使计算机具有智能的根本途径。

深度学习

深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。 深度学习是一个复杂的机器学习算法,在语音和图像识别方面取得的效果,远远超过先前相关技术。 [1]

神经网络

人工神经网络算法

人工神经网络与神经元组成的异常复杂的网络此大体相似,是个体单元互相连接而成,每个单元有数值量的输入和输出,形式可以为实数或线性组合函数。它先要以一种学习准则去学习,然后才能进行工作。当网络判断错误时,通过学习使其减少犯同样错误的可能性。此方法有很强的泛化能力和非线性映射能力,可以对信息量少的系统进行模型处理。从功能模拟角度看具有并行性,且传递信息速度极快。
神经网络数学原理
单个神经元的数学构成很简单,包含两个部分权重和偏置,每个输入值进入神经元都会进行类似y=wx+b其中w为权重,b为偏置,x为输入值,y为单个输入值的结果,经过激活函数激活后输出结果为f(wx+b),其中f为激活函数。存在多个输入值使用激活函数的情况下输出值为f(w1x1+w2x2+…+wnxn+b)。
激活函数的作用
激活函数也成为映射函数,可以对计算结果进行非线性转换,从而提升神经网络的表达能力,从而能够处理线性不可分的问题,比如语音识别和图像识别等。常见的激活函数有sigmoid,tanh,relu…等。

激活函数

激活函数(Activation functions)对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。其主要目的是将A-NN(人工神经网络)模型中一个节点的输入信号转换成一个输出信号。该输出信号现在被用作堆叠中下一个层的输入。
激活函数的另一个重要特征是:它应该是可以区分的。我们需要这样做,以便在网络中向后推进以计算相对于权重的误差(丢失)梯度时执行反向优化策略,然后相应地使用梯度下降或任何其他优化技术优化权重以减少误差。

梯度消失

梯度消失是传统神经网络训练中非常致命的一个问题,其本质是由于链式法则的乘法特性导致的。比如之前神经网络中最流行的激活函数之一Sigmoid,其表达式如下:
把这个函数的导数画出来,如图:
对于Sigmoid,导数的最大值在输入为0处,值为0.25.考虑一个激活函数都是Sigmoid的多层神经网络,则梯度向后传导时,没经过一个Sigmoid就需要乘以一个小于0.25的梯度。而每乘以一个小于0.25的梯度,则梯度的值又变得更小一些。况且在优化的过程中,每个激活层输入都在0附近的概率非常的低。也就是说随着层数的加深,梯度的衰减会非常的大,迅速接近0,这就是梯度消失的现象

反向传播算法

https://www.sohu.com/a/168767295_826434
https://www.jianshu.com/p/74bb815f612e
损失函数
https://blog.csdn.net/hhtnan/article/details/54571944

深度神经网络

https://www.jianshu.com/p/6b9d8d5008cb

TensorFlow

https://baike.baidu.com/item/TensorFlow/18828108?fr=aladdin(百度百科)
https://www.cnblogs.com/wmr95/p/7500960.html (Ubuntu Tensorflow 安装教程)
https://blog.csdn.net/qq_23851075/article/details/51335338(Ubuntu Kylin 16.04 LTS 安装TensorFlow)
http://c.biancheng.net/tensorflow/
TensorFlow Python教程)
https://blog.csdn.net/zqx951102/article/details/89105110
tensorflow 安装GPU版本

https://blog.csdn.net/mandagod/article/details/89446473 java 简介

https://www.w3cschool.cn/tensorflow_python/tensorflow_python-b8jq2gqh.html(菜鸟教程)
TensorFlow™是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief [1] 。
Tensorflow拥有多层级结构,可部署于各类服务器、PC终端和网页并支持GPU和TPU高性能数值计算,被广泛应用于谷歌内部的产品开发和各领域的科学研究 [1-2] 。
TensorFlow由谷歌人工智能团队谷歌大脑(Google Brain)开发和维护,拥有包括TensorFlow Hub、TensorFlow Lite、TensorFlow Research Cloud在内的多个项目以及各类应用程序接口(Application Programming Interface, API) [2] 。自2015年11月9日起,TensorFlow依据阿帕奇授权协议(Apache 2.0 open source license)开放源代码 [2] 。

TensorFlow支持多种客户端语言下的安装和运行。截至版本1.12.0,绑定完成并支持版本兼容运行的语言为C和Python,其它(试验性)绑定完成的语言为JavaScript、C++、Java、Go和Swift,依然处于开发阶段的包括C#、Haskell、Julia、Ruby、Rust和Scala [5] 。

TensorFlow相关调用

下面一起看一下这段简单的代码:
导入tensorflow,这将导入 TensorFlow 库,并允许使用其精彩的功能:
import tensorflow as if
由于要打印的信息是一个常量字符串,因此使用 tf.constant:
message = tf.constant(‘Welcome to the exciting world of Deep Neural Networks!’)
为了执行计算图,利用 with 语句定义 Session,并使用 run 来运行:
with tf.Session() as sess:
print(sess.run(message).decode())
最后是在会话中打印的信息:
Welcome to the exciting world of Deep Neural Networks!

TensorFlow 常量
要创建一个所有元素为零的张量,可以使用 tf.zeros() 函数。这个语句可以创建一个形如 [M,N] 的零元素矩阵,数据类型(dtype)可以是 int32、float32 等
tf.zeros([M,N],tf.dtype)
例如:
zero_t = tf.zeros([2,3],tf.int32)
Results in an 2x3 array of zeros:[[0 0 0],[0 0 0]]

创建一个所有元素都设为 1 的张量。下面的语句即创建一个形如 [M,N]、元素均为 1 的矩阵:
tf.ones([M,N],tf,dtype)
例如:
ones_t = tf.ones([2,3],tf.int32)
Results in an 2x3 array of ones:[[1 1 1],[1 1 1]]

在一定范围内生成一个从初值到终值等差排布的序列:
tf.linspace(start,stop,num)
相应的值为 (stop-start)/(num-1)。例如:
range_t = tf.linspace(2.0,5.0,5)
#We get:[2. 2.75 3.5 4.25 5.]
从开始(默认值=0)生成一个数字序列,增量为 delta(默认值=1),直到终值(但不包括终值):
tf.range(start,limit,delta)
下面给出实例:
range_t = tf.range(10)
#Result:[0 1 2 3 4 5 6 7 8 9]

TensorFlow 变量

它们通过使用变量类来创建。变量的定义还包括应该初始化的常量/随机值。下面的代码中创建了两个不同的张量变量 t_a 和 t_b。两者将被初始化为形状为 [50,50] 的随机均匀分布,最小值=0,最大值=10:

注意:变量通常在神经网络中表示权重和偏置。
下面的代码中定义了两个变量的权重和偏置。权重变量使用正态分布随机初始化,均值为 0,标准差为 2,权重大小为 100×100。偏置由 100 个元素组成,每个元素初始化为 0。在这里也使用了可选参数名以给计算图中定义的变量命名:

在前面的例子中,都是利用一些常量来初始化变量,也可以指定一个变量来初始化另一个变量。下面的语句将利用前面定义的权重来初始化 weight2:

变量的定义将指定变量如何被初始化,但是必须显式初始化所有的声明变量。在计算图的定义中通过声明初始化操作对象来实现:

每个变量也可以在运行图中单独使用 tf.Variable.initializer 来初始化:

保存变量:使用 Saver 类来保存变量,定义一个 Saver 操作对象:
saver = tf.train.Saver()
TensorFlow 占位符
介绍完常量和变量之后,我们来讲解最重要的元素——占位符,它们用于将数据提供给计算图。可以使用以下方法定义一个占位符:
tf.placeholder(dtype,shape=None,name=None)
dtype 定占位符的数据类型,并且必须在声明占位符时指定。在这里,为 x 定义一个占位符并计算 y=2*x,使用 feed_dict 输入一个随机的 4×5 矩阵:

解读分析
需要注意的是,所有常量、变量和占位符将在代码的计算图部分中定义。如果在定义部分使用 print 语句,只会得到有关张量类型的信息,而不是它的值。

为了得到相关的值,需要创建会话图并对需要提取的张量显式使用运行命令,如下所示:
print(sess.run(t_1))
#Will print the value of t_1 defined in step 1

常用函数
tf.constant
#创建一个常量,产生的张量为dtype类型,可指定参数如value和可选的shape
tensor = tf.constant([1, 2, 3, 4, 5, 6, 7])
tf.matmul矩阵乘法

构造器的返回值代表该常量 op 的返回值.

matrix1 = tf.constant([[3., 3.]])

创建另外一个常量 op, 产生一个 2x1 矩阵.

matrix2 = tf.constant([[2.],[2.]])

创建一个矩阵乘法 matmul op , 把 ‘matrix1’ 和 ‘matrix2’ 作为输入.

返回值 ‘product’ 代表矩阵乘法的结果.

product = tf.matmul(matrix1, matrix2)

tf.Session()

Session 是 Tensorflow 为了控制,和输出文件的执行的语句. 运行 session.run() 可以获得你要得知的运算结果, 或者是你所要运算的部分. (通常与run搭配使用)

https://blog.csdn.net/weixin_40458355/article/details/80351641
例:

  1. with tf.Session() as sess:
  2. result2 = sess.run(product)
  3. print(result2)
    sess.close() #//需要关闭资源 或 使用with

tf.device
用来指派特定的 CPU 或 GPU 执行操作
例:
with tf.Session() as sess:
with tf.device("/gpu:1"):
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
product = tf.matmul(matrix1, matrix2)

算术运算
tf.add加,tf.subtract减,tf.multiply乘,tf.scalar_mul(标量和张量相乘),tf.div除

tf.assign
tf.assign(A, new_number): 这个函数的功能主要是把A的值变为new_number (赋值)

tf.assign是创建一个操作符这个操作符具有这个值变量的值,而=是Python中的赋值,tensorflow函数的操作会新建一个节点,如果用Python的=那么就相当于将变量的引用给到这个新节点上,但是在计算图上并没有相应的赋值操作节点(因为只是python对于等式右边节点的一个引用而已),而如果使用tf.assign的话计算图中有赋值节点。
你只要分清哪些是tensorflow中的操作和哪些是python语言的引用操作,就能分清哪些是在建图,哪些只是在改变引用。

tf.random_normal
随机张量
tf.random_normal()函数用于从服从指定正太分布的数值中取出指定个数的值。

tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
shape: 输出张量的形状,必选
mean: 正态分布的均值,默认为0
stddev: 正态分布的标准差,默认为1.0
dtype: 输出的类型,默认为tf.float32
seed: 随机数种子,是一个整数,当设置之后,每次生成的随机数都一样
name: 操作的名称
tf.Variable
定义—简单一句话“参数”
我们使用变量Variables去更新参数。变量在内存中。
通过构造一个Variable类的实例在图中添加一个变量(variable), Variable()这个构造函数需要初始值,这个初始值可以是一个任何类型任何形状的Tensor,初始值的形状和类型决定了这个变量的形状和类型。构造之后,这个变量的形状和类型就固定了,他的值可以通过assign()函数(或者assign类似的函数)来改变。如果你想要在之后改变变量的形状,你就需要assign()函数同时变量的validate_shape=False
和任何的Tensor一样,通过Variable()创造的变量能够作为图中其他操作的输入使用。你也能够在图中添加节点,通过对变量进行算术操作。

tf.eye
建立一个单位矩阵,例:
tf.eye(3)
–>[[1,0,0],
[0,1,0],
[0,0,1]]

tf.placeholder

占位符。所谓占位符,顾名思义,先占着茅坑不拉屎,等需要时再赋值。

feed_dict

用来赋值的,格式为字典型。
例feed_dict={a:8}。

TensorFlow读取数据
在 TensorFlow 中可以通过三种方式读取数据:
1通过feed_dict传递数据;
2从文件中读取数据;
3使用预加载的数据;

TensorBoard可视化数据流图
TensorFlow 使用 TensorBoard 来提供计算图形的图形图像。这使得理解、调试和优化复杂的神经网络程序变得很方便。TensorBoard 也可以提供有关网络执行的量化指标。它读取 TensorFlow 事件文件,其中包含运行 TensorFlow 会话期间生成的摘要数据。

回归算法
线性回归:
使用最广泛的建模技术之一。已存在 200 多年,已经从几乎所有可能的角度进行了研究。线性回归假定输入变量(X)和单个输出变量(Y)之间呈线性关系。它旨在找到预测值 Y 的线性方程:

其中,X=(x1,x2,…,xn) 为 n 个输入变量,W=(w1,w2,…,wn) 为线性系数,b 是偏置项。目标是找到系数 W 的最佳估计,使得预测值 Y 的误差最小。使用最小二乘法估计线性系数 W,即使预测值 (Yhat) 与观测值 (Y) 之间的差的平方和最小。

因此,这里尽量最小化损失函数:

其中,需要对所有训练样本的误差求和。根据输入变量 X 的数量和类型,可划分出多种线性回归类型:简单线性回归(一个输入变量,一个输出变量),多元线性回归(多个输入变量,一个输出变量),多变量线性回归(多个输入变量,多个输出变量)。
更多线性回归的相关内容,可参考https://en.wikipedia.org/wiki/Linear_regression。

逻辑回归:
用来确定一个事件的概率。通常来说,事件可被表示为类别因变量。事件的概率用 logit 函数(Sigmoid 函数)表示:

现在的目标是估计权重 W=(w1,w2,…,wn) 和偏置项 b。在逻辑回归中,使用最大似然估计量或随机梯度下降来估计系数。损失函数通常被定义为交叉熵项:

逻辑回归用于分类问题,例如,对于给定的医疗数据,可以使用逻辑回归判断一个人是否患有癌症。如果输出类别变量具有两个或更多个层级,则可以使用多项式逻辑回归。另一种用于两个或更多输出变量的常见技术是 OneVsAll。对于多类型逻辑回归,交叉熵损失函数被修改为:

其中,K 是类别总数。更多逻辑回归的相关内容,可参考https://en.wikipedia.org/wiki/Logistic_regression。

正则化:
当有大量的输入特征时,需要正则化来确保预测模型不会 太复杂。正则化可以帮助防止数据过拟合。它也可以用来获得一个凸损失函数。有两种类型的正则化——L1 和 L2 正则化,其描述如下:
当数据高度共线时,L1 正则化也可以工作。在 L1 正则化中,与所有系数的绝对值的和相关的附加惩罚项被添加到损失函数中。L1 正则化的正则化惩罚项如下:

L2 正则化提供了稀疏的解决方案。当输入特征的数量非常大时,非常有用。在这种情况下,惩罚项是所有系数的平方之和:

其中,λ是正则化参数。
TensorFlow损失函数
http://c.biancheng.net/view/1903.html
TensorFlow优化器
http://c.biancheng.net/view/1904.html

其他函数:
tf.train.Coordinator()
tf.train.start_queue_runners
TensorFlow提供了两个类来实现对Session中多线程的管理:tf.Coordinator和 tf.QueueRunner,这两个类往往一起使用。
Coordinator类用来管理在Session中的多个线程,可以用来同时停止多个工作线程并且向那个在等待所有工作线程终止的程序报告异常,该线程捕获到这个异常之后就会终止所有线程。使用 tf.train.Coordinator()来创建一个线程管理器(协调器)对象。
QueueRunner类用来启动tensor的入队线程,可以用来启动多个工作线程同时将多个tensor(训练数据)推送入文件名称队列中,具体执行函数是 tf.train.start_queue_runners , 只有调用 tf.train.start_queue_runners 之后,才会真正把tensor推入内存序列中,供计算单元调用,否则会由于内存序列为空,数据流图会处于一直等待状态。

NumPy
https://www.runoob.com/numpy/numpy-tutorial.html
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPy。NumPy 为开放源代码并且由许多协作者共同维护开发。
NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:
1。一个强大的N维数组对象 ndarray
2。广播功能函数
3。整合 C/C++/Fortran 代码的工具
4。线性代数、傅里叶变换、随机数生成等功能

NPU(网络处理器)
嵌入式神经网络处理器(NPU)采用“数据驱动并行计算”的架构,特别擅长处理视频、图像类的海量多媒体数据。
npu不是测试的项目,是网络处理器,可以把这个认为是一个组件(或者子系统),有的时候也可以称呼为 [2] NPU协处理器。嵌入式神经网络处理器(NPU)采用“数据驱动并行计算”的架构,特别擅长处理视频、图像类的海量多媒体数据。

CUDA
显卡厂商NVIDIA推出的运算平台
通用并行计算架构,该架构使GPU能够解决复杂的计算问题

CUDA从入门到入土
https://blog.csdn.net/qq_30263737/article/details/81235580
https://blog.csdn.net/kkk584520/category_1501249.html

cuda限定符声明 和声明前缀
https://www.cnblogs.com/tibetanmastiff/p/4712618.html

关于人工智能 (深度学习) 能运用在哪些方面
人脸识别
文字识别
语音识别
智能语音输入,机器人输入、
指纹识别,人脸识别,视网膜识别,掌纹识别,专家系统,智能搜索,自动程序设计
华为
案例 智能防御
https://e.huawei.com/cn/material/networking/networksecurity/bf0892a745614f3ebb1d5ff7e1e5054f
作用:关于网络安全的防御体系
作用方式:

作用场景

园区网络安全协防:领先一步发现威胁,自动阻断传播
云数据中心安全:全网安全态势感知,基于AI主动防御

华为 智能推荐
https://e.huawei.com/cn/material/local/ea6deb56cbef44c7a4cf40630435194a
作用:提升应用中推荐内容的点击率
作用场景:各个需要或拥有推荐功能的网站与应用
推荐系统的运用领域有:电影和视屏推荐、个性化音乐推荐、图书推荐、电子商务、邮件、位置、广告、社交等。

华为 自动驾驶
https://e.huawei.com/cn/material/event/HC/25761d5eabdf4eac89084db499114e8d

华为 人体特征识别系统

华为 基于AI的园区网络智能运维
https://e.huawei.com/cn/material/networking/networkanalyzers/2816c4f725cb45fc861f12ae82dbbcf0
识别潜在问题提醒运维人员或自动修复

百度人工智能
小度 (人工智能助手)
https://baike.baidu.com/item/%E5%B0%8F%E5%BA%A6/23331497
小度内置DuerOS对话式人工智能系统,让用户以自然语言对话的交互方式,实现影音娱乐、信息查询、生活服务、出行路况等800多项功能的操作。同时,借助百度AI能力,小度不断学习进化,了解用户的喜好和习惯,变得越来越“聪明”。

(夜莺)智能客服机器人:
https://baike.baidu.com/item/%E7%99%BE%E5%BA%A6%E5%A4%9C%E8%8E%BA/20198788?fr=aladdin
智能客服机器人是人工智能技术商业化落地场景中最为成熟的一个应用场景,根据沟通类型又可以分为在线智能客服机器人和电话智能客服机器人。

百度翻译(神经网络翻译)
https://baike.baidu.com/item/%E7%99%BE%E5%BA%A6%E7%BF%BB%E8%AF%91/10607809?fr=aladdin
百度翻译是百度发布的在线翻译服务,依托互联网数据资源和自然语言处理技术优势,致力于帮助用户跨越语言鸿沟,方便快捷地获取信息和服务。

专家系统
专家系统是一个智能计算机程序系统,其内部含有大量的某个领域专家水平的知识与经验,能够利用人类专家的知识和解决问题的方法来处理该领域问题。
https://baike.baidu.com/item/%E4%B8%93%E5%AE%B6%E7%B3%BB%E7%BB%9F/267819?fr=aladdin

法狗狗
[1] 是“人工智能+法律”的科技团队,为国内律所提供基于人工智能技术的一站式营销解决方案。法狗狗将人工智能技术、来自硅谷的大数据和云计算技术融合应用于中国的法律行业,通过信息化提高律师工作效率,全方位驱动律所营销升级。

https://baike.baidu.com/item/%E6%B3%95%E7%8B%97%E7%8B%97/20468085?fr=aladdin
北京字节跳动科技有限公司
独立研发的“今日头条”客户端,通过海量信息采集、深度数据挖掘和用户行为分析,为用户智能推荐个性化信息,从而开创了一种全新的新闻阅读模式。

H20.ai(无人驾驶)
https://www.h2o.ai/products/h2o-driverless-ai/

Faiss(FaceBook 开源)
Faiss 是 FaceBook 开源的一个项目,主要为了图片相似性搜索
https://waltyou.github.io/Faiss-Introduce/

碳云智能家居
https://sd.sd079.com/chuanglue1/?=PC01169&bd_vid=7167308390654348554

旷视科技
https://www.megvii.com/technologies/algorithm_engine?curr_tab=3

达阔科技
https://baike.baidu.com/item/%E8%BE%BE%E9%97%BC%E7%A7%91%E6%8A%80%EF%BC%88%E5%8C%97%E4%BA%AC%EF%BC%89%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8/20016168?fr=aladdin
https://www.cloudminds.com/product-4.html#

云从科技
https://www.cloudwalk.cn/site/product_and_service/890

人工智能专利技术分布

人工智能之搜索方法
含义:https://blog.csdn.net/starter_____/article/details/91621675
详解:
一:
2、问题表示法
2.1状态空间表示法
2.2与或树表示法
二、状态空间树的搜索方法
1、状态空间的盲目搜索方法
1.1宽度优先搜索
1.2深度优先搜索
1.3代价树
2、状态空间的启发式搜索
三、与或树的搜索算法
1、与或树的盲目搜索
2.2博弈树

https://blog.csdn.net/qq_31456593/article/details/78621193

英特尔人工智能技术在医疗健康行业的应用实践

https://www.intel.cn/content/www/cn/zh/analytics/artificial-intelligence/ai-practice-in-healthcare.html

阿里巴巴 人工智能产品网站
https://ai.aliyun.com/?spm=5176.224200.h2v3icoap.181.362a6ed6EBmqER&aly_as=ZRzmBLjM

腾讯AI
https://ai.qq.com/doc/nlpchat.shtml

百度AI

http://ai.baidu.com/?track=cp:ainsem|pf:pc|pp:tongyong-pinpai|pu:pinpai-baiduAI|ci:|kw:10003812
人工智能的常用十种算法
https://blog.csdn.net/fanyun_01/article/details/83505856

深度学习文字识别教程
https://www.cnblogs.com/YSPXIZHEN/p/11337360.html
Lenet教程
作用:主要用来进行手写字符的识别与分类
教程:
https://blog.csdn.net/qq_31278903/article/details/90512039

30个机器学习实例

http://www.sohu.com/a/226243658_114877
Style2Paints: 图像的AI彩色化 [在 Github 有 3310 ]。

机器学习训练模型优化器
U-Net 图像分割
AI创造加密算法(https://www.freebuf.com/news/119081.html)

图像识别——》图像分析——》分类或预测

你可能感兴趣的:(机器学习)