李宏毅机器学习第一课(结尾附作业模型详细分析)
机器学习就是让机器找一个函数f,这个函数f是通过计算机找出来的
如果参数少的话,我们可以使用暴搜,但是如果参数特别多的话,我们就要使用Gradient Descent
Regression (输出的是一个scalar数值)
Classification (在设定好的选项,两个或者多个,中做出选择)
Structured Learning (画一张图,写一段文字,让机器学会创造)
机器人寻找一个函数式子有三个步骤
一:function with unknow parameters
我们需要基于domain knowledge 来猜测确定一个函式,这个函数就是model
feature x 是我们已经知道的数据 , weight w、 bias b 是未知的参数 , label 是一个正确的数值
hyper parameters是我们在机器学习的时候,我们自己设置的参数
y = b + wx
二:Difine Loss
本质上也是一个function ,输入是上面b和w,输出的值代表输入的b和w好还是不好
label是真实的数据
我们根据y = b + wx来预测数据,和label之间的差距取一个绝对值
然后吧每一组数据都计算y^ ,然后加总求一下平均值
e = |y - y^| 如果用这种方式来计算的话, L is mean absolute err (MAE)
具体用哪一种函数来衡量这一组参数的好坏,取决于对问题的本质的理解
Error Surface 是等高线图,是尝试了多个w和b之后的结果
三:Optimization
是找一个最好的w和b,叫做w*和b* ,用到的方法是Gradient Descent,
假设现在只有一个参数
假设现在有两个参数,和之前一个参数其实一样的
上面三个步骤,是在做机器学习的训练
我们之后还需要做预测
训练的数据和预测的数据做一个对比,发现后者的loss比前者的loss大,这说明,我们在预测已经存在的数据的效果比较好,但是预测未知的数据效果比较差
我们需要修改模型,对模型的修改,往往来自于对问题本质的理解,我们修改了模型,让分别考虑前七天,前28天,前56天等等
model bias
上面的所有模型都是Linear model ,也许Linear模型过于简单,我们可以修改w,修改b,但是模型始终都是一条直线,我们始终无法实现红色的这种模型
Linear models本质是一条线性直线,但是很多问题不是Linear models,Linear models 有很大的限制,来自于model的限制叫做model bias
piecewise Linear Curves
我们可能是想要piecewise Linear Curves (分段线性曲线:一种由多个线性部分组成的曲线,每个部分都是线性的,但整体上可能不是线性的),我们其实可以通过下面的方式达到这种效果,我们可以是所有一系列 下面蓝色的function
再也许piecewise Linear 也无法满足我们模型的需求了,我们想要的是曲线,如下图所示
piecewise Linear Curves 足够多,可以逼近曲线,此时所有的 piecewise Linear 虽然是直线,但是已经达到了曲线的效果
那这个蓝色的function (Hard Sigmod)是什么呢? 如何把蓝色的function写出来呢?
其实就是用sigmoid函数来逼近蓝色的function
我们需要各种各样的蓝色的function,那我们可以通过调整b和w来实现
所以,我们需要一个红色的function,就可以通过下面的方式来实现,同时我们既然实现了红色的function,我们可以实现和红色类似的曲线(Continuous)
所以,我们解决了model bias的问题
如何计算这个式子呢?
用线性代数的表示方式表示如下:
输出=w1⋅x1+w2⋅x2+…+w8⋅x8+偏置项
最后总的表示一下
这里面,除了x是feature,其他都是未知的参数,我们使用线性代数的方式来统一表示
模型定义解决了,接下来是第二步定义Loss function,跟之前是一模一样的
第三部optimization ,也是一模一样
Batch 、 Epoch
我们在之前计算loss的时候,是把所有的data都参与进去,但是现在的话,我们是把data分成 L 笔,每一笔就是一个batch ,每个batch都计算loss,每次根据计算出来的loss然后对当前参数进行微分,一直把所有的batch完成,这就是一个epoch,一个epoch中会update N / B = L次参数
我们刚才是使用sigmoid函数来模拟蓝色的function ( hard sigmoid ),多个hard sigmoid 叠加, 从而实现红色的function
但是 这个蓝色的function ,也可以不用sigmoid函数模拟,我们可以使用 两个Rectified Linear来实现蓝色的function
Activation Function : Relu和sigmoid
ReLU和sigmoid那个好呢? 后续会讲解
我们使用1000个Relu函数之后,就可以实现很复杂的函数,效果会有改善
Deep Learning
深度学习,我们计算出来的a,我们再把a重新放入函数中,再计算很多次
Overfitting
Better on training data, worse on unseen data
作业一的模型
self.layers = nn.Sequential(# 这个地方函数都是有参数的, 只是没有写出来# y[0] = weight[0][0] * x[0] + weight[0][1] * x[1] + ... + weight[0][input_dim - 1] * x[input_dim - 1] + bias[0]# y[1] = weight[1][0] * x[0] + weight[1][1] * x[1] + ... + weight[1][input_dim - 1] * x[input_dim - 1] + bias[1]# ...# y[15] = weight[15][0] * x[0] + weight[15][1] * x[1] + ... + weight[15][input_dim - 1] * x[input_dim - 1] + bias[15]# 类似于视频中YouTube观看人数预测,如果考虑七天,input_dim就是7,如果考虑28天,input_dim就是28nn.Linear(input_dim, 16), # 这个是一个线性层# 对于每个输出维度y[i](其中 i是从0到15的索引),ReLU激活函数将执行以下操作:# y[i] = max(0, y[i])nn.ReLU(), # 激活函数,我们可以对上面的结果进行Relu操作nn.Linear(16, 8),nn.ReLU(),# 具体地,线性映射通过一个权重矩阵和一个偏置项来实现,将每个输入维度与相应的权重相乘,然后将结果相加,再加上偏置项。nn.Linear(8, 1) # 因为我们最终是要预测一个数字结果,所以这个地方要是一维的# 视频上面预测Youtube人数,就是nn.Linear(3,1),视频上面直接就是输出的一维结果)
nn.Linear(input_dim, 16),为什么要输出16维度的结果?
input_dim就对应视频中的考虑7天,28天,56天等等
16 代表输出的是一个16维度的结果 ,这个就是我们自己设置了
Linear 里面有很多的weight参数和一个bias参数,这些我们看不到,但是pytroch帮我们做好了,机器学习就是在找这些参数。
chatgpt回复:是的,你可以将模型中的16更改为32,以增加隐藏层的维度。这将增加模型的复杂性,并有可能提高其性能,尤其是在处理更复杂的数据或任务时。但请注意,增加隐藏层维度也会增加模型的计算复杂度,因此你可能需要更多的数据来训练模型,以避免过拟合。
你可以像这样更改模型的隐藏层维度:
self.layers = nn.Sequential( nn.Linear(input_dim, 32), # 将16更改为32 nn.ReLU(), nn.Linear(32, 8), # 这里也需要相应地更改输入和输出维度 nn.ReLU(),nn.Linear(8, 1))
记得根据你的数据和任务来调整模型的参数,以获得最佳性能。如果你的数据集较小,你还可以考虑使用正则化技巧来防止过拟合。
隐藏层的维度通常是根据你的具体问题和数据来确定的,而不是一个固定的数值。选择隐藏层维度通常是深度学习模型设计中的一个超参数,需要进行调优。
Relu函数起到了什么作用?
后面就一个ReLU函数,引入非线性,这一个Relu函数,能作用于Linear的多个输出,对每个维度的输出都做sigmoid,也就是说,每个维度上面都会进行非线形的操作。
nn.Linear(16, 8) 和 nn.ReLU()的作用?
深度学习,deep learning ,能让效果变好,为什么?不要问,反正能变好
nn.Linear(8, 1) 的作用?
我们最后是要输出一个发病率数字,所以需要把最后的多个维度的输入变成一个维度的输出
相关文章:

李宏毅机器学习第一课(结尾附作业模型详细分析)
机器学习就是让机器找一个函数f,这个函数f是通过计算机找出来的 如果参数少的话,我们可以使用暴搜,但是如果参数特别多的话,我们就要使用Gradient Descent Regression (输出的是一个scalar数值) Classification (在…...
对日项目工作总结
从18年8月到23年中秋节,目前已经入职主营对日车载项目的公司满5年了,一般来说,在一家公司工作工作超过3年,如果是在比较大型以及流程规范的公司,那么该公司的工作流程,工作思维会深深地烙印在该员工的脑海中…...

设计模式探索:从理论到实践的编码示例 (软件设计师笔记)
😀前言 设计模式,作为软件工程领域的核心概念之一,向我们展示了开发过程中面对的典型问题的经典解决方案。这些模式不仅帮助开发者创建更加结构化、模块化和可维护的代码,而且也促进了代码的复用性。通过这篇文章,我们…...

【内网穿透】在Ubuntu搭建Web小游戏网站,并将其发布到公网访问
目录 前言 1. 本地环境服务搭建 2. 局域网测试访问 3. 内网穿透 3.1 ubuntu本地安装cpolar 3.2 创建隧道 3.3 测试公网访问 4. 配置固定二级子域名 4.1 保留一个二级子域名 4.2 配置二级子域名 4.3 测试访问公网固定二级子域名 前言 网:我们通常说的是互…...
在cesuim上展示二维模型
前提问题:在cesuim上展示二维模型 解决过程: 1.获取或定义所需变量 2.通过window.cesium.viewer.imageryLayers.addImageryProvider和new Cesium.UrlTemplateImageryProvider进行建模 3.传入url路径后拼接{z}/{x}/{y}.png 4.聚焦到此模型window.ces…...
c/c++中如何输入pi
标准的 C/C 语言中没有π这个符号及常量,一般在开发过程中是通过开发人员自己定义这个常量的,最常见的方式是使用宏定义: 方法1:#define pi 3.1415926 方法2:使用反三角函数const double pi acos(-1.0);...
python爬虫:JavaScript 混淆、逆向技术
Python爬虫在面对JavaScript混淆和逆向技术时可能会遇到一些挑战,因为JavaScript混淆技术和逆向技术可以有效地阻止爬虫对网站内容的正常抓取。以下是一些应对这些挑战的方法: 分析网页源代码:首先,尝试分析网页的源代码…...
Vue error:0308010C:digital envelope routines::unsupported
vue项目,npm run dev的时候出现:Error: error:0308010C:digital envelope routines::unsupported vue项目,npm run dev的时候出现:Error: error:0308010C:digital envelope routines::unsupported 这个是node的版本问题。我的nod…...

gitee 远程仓库操作基础(一)
git remote add <远程仓库名> <仓库远程地址> :给远程仓库取个别名,简化一大堆字符串操作 git remote add origin xxx.git :取个Origin名字 git remote -v :查看本地存在的远程仓库 git pull <远程仓库名><远程分支名>:<本地分支名> 相同可取消…...
DRM全解析 —— ADD_FB2(0)
本文参考以下博文: DRM驱动(四)之ADD_FB 特此致谢! 在笔者之前的libdrm全解析系列文章中,讲到了drmIoctl(fd, DRM_IOCTL_MODE_ADDFB, &f)以及其封装函数drmModeAddFB。对应的文章链接为: libdrm全解…...

01Redis的安装和开机自启的配置
安装Redis 单机安装Redis 大多数企业都是基于Linux服务器来部署项目,而且Redis官方也没有提供Windows版本的安装包(此处选择的Linux版本的CentOS 7) Windows版直接下载对应版本的.zip压缩包解压即可使用 第一步: Redis是基于C语言编写的,因此首先需要…...

进入IT行业:选择前端开发还是后端开发?
一、前言 开发做前端好还是后端好?这是一个常见的问题,特别是对于初学者来说。在编程世界中,前端开发和后端开发分别代表着用户界面和数据逻辑,就像城市的两个不同街区一样。但是,究竟哪个街区更适合我们作为开发者呢…...

Java集成Onlyoffice以及安装和使用示例,轻松实现word、ppt、excel在线编辑功能协同操作,Docker安装Onlyoffice
安装Onlyoffice 拉取onlyoffice镜像 docker pull onlyoffice/documentserver 查看镜像是否下载完成 docker images 启动onlyoffice 以下是将本机的9001端口映射到docker的80端口上,访问时通过服务器ip:9001访问,并且用 -v 将本机机/data/a…...
编程面试_动态规划
题目1 最大连续乘积子串 题目描述给一个浮点数序列,取最大乘积连续子串的值,例如 -2.5,4,0,3,0.5,8,-1,则取出的最大乘积连续子串为3,0.5,8。也就…...
ip地址可以精确定位吗
在互联网时代,IP地址的重要性不言而喻。作为网络通信的基础,IP地址用于标识每一台连接到互联网的设备。然而,传统的IP地址定位方式仅能粗略地确定设备的大致位置,无法实现精确定位。那么,IP地址能否实现精确定位呢&…...
Xamarin体验:使用C#开发iOS/Android应用
http://www.cnblogs.com/lwme/p/use-xamarin-develop-Android-iOS-app.html Xamarin是Mono创始人Miguel de Icaza创建的公司,旨在让开发者可以用C#编写iOS, Android, Mac应用程序,也就是跨平台移动开发。 简介 Xamarin是基于Mono的平台,目前主要有以下产品(更具体请见:h…...
聊聊druid连接池的监控
序 本文主要研究一下druid连接池的监控 init com/alibaba/druid/pool/DruidDataSource.java public void init() throws SQLException {//......registerMbean();//...... }DruidDataSource的init方法会执行registerMbean registerMbean com/alibaba/druid/pool/DruidData…...

CentOS 7 安装 Docker 的详细步骤
文章目录 Docker简介1.更新2.安装必要的软件包3.添加Docker仓库4.安装5.安装后的一些常规设置及常用的命令5.1 启动 Docker5.2 Docker 在系统启动时自动运行5.3 运行一个 Hello World 镜像5.4 查看docker运行状态5.5 docker ps5.6 查看docker版本 6.安装种常见的错误错误1:yum-…...

竞赛 基于深度学习的动物识别 - 卷积神经网络 机器视觉 图像识别
文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…...

数据结构之【泛型】
泛型:定义阶段不明确具体类型,产生对象时明确具体类型。 //Object是Java中的最高参数统一化,能够接受所有的引用类型; //有了包装类的自动拆装箱之后,Object还能够接收基本类型数值(自动装箱) …...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...

一些实用的chrome扩展0x01
简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...