一、打卡
二、学习
李宏毅老师对应视频课程:预测本频道观看人数(上) - 机器学习基本概念简介_哔哩哔哩_bilibili
1、机器学习
(1)、机器学习基础
机器学习是一种人工智能的分支领域,关注如何使计算机系统能够通过数据和经验来学习和改进性能,而无需明确地进行编程。通过机器学习,计算机系统能够从数据中提取模式、进行归纳推理和决策,从而实现自主学习和自主适应。机器学习算法包括监督学习、无监督学习和强化学习等,可以应用于数据挖掘、模式识别、自然语言处理、图像识别等各种领域。
举个例子:
比如现在要计算机通过某种函数给我输出“how are you”的字样,计算机是通过不同的函数来输出不同的结果,而这个函数非常复杂远远不是人类能写出来的,让计算机去寻找这个函数的过程就叫做机器学习
随着要找的函数不同学习方式也不同,分为以下两种:
(1)、Regression (回归):The function outputs a scalar
回归任务的目的是预测一个连续的数值输出。这意味着模型的输出是一个数值(标量),可以用来描述量度或数值相关的事物。
比如我要预测24号空气的PM2.5的值,输出是一个数值。
(2)、Classification(分类)
分类任务的目标是将输入数据分到预定义的类别中。输出是离散的,即模型的结果是固定类别或标签之一。
在邮箱中判断哪一封是垃圾邮件,判断时有两种结果“是”或者“否”。
(2)、查找函数
机器学习查找函数分为三步:
- 写一个带有未知参数的函数,例如:y=wx+b
- 定义Loss(Loss本质上也是个function),输入值时L(b,w),最终的Loss:L=
- 最佳化
import numpy as np
def loss_function(y_true, y_pred, **kwargs):
"""
计算均方误差(MSE)损失.
参数:
y_true -- 真实值(numpy数组)
y_pred -- 预测值(numpy数组)
kwargs -- 其他可选参数
返回:
loss -- 计算得到的损失值
"""
# 计算均方误差
loss = np.mean((y_true - y_pred) ** 2)
# 可根据kwargs做额外的处理
# 例如,可以通过kwargs调整损失计算的权重
if 'weight' in kwargs:
weight = kwargs['weight']
loss *= weight
return loss
# 示例使用
y_true = np.array([3, -0.5, 2, 7])
y_pred = np.array([2.5, 0.0, 2, 8])
# 调用损失函数
mse_loss = loss_function(y_true, y_pred)
print(f"Mean Squared Error Loss: {mse_loss}")
# 使用权重参数
weighted_loss = loss_function(y_true, y_pred, weight=0.5)
print(f"Weighted Mean Squared Error Loss: {weighted_loss}")
函数解释:
-
参数:
y_true
: 真实的目标值,通常是一个 NumPy 数组。y_pred
: 模型的预测值,也通常是一个 NumPy 数组。kwargs
: 其他可选参数,这里可以包含任何额外的参数,如权重等。
-
损失的计算:
- 该示例损失函数实现了均方误差(MSE)。它计算预测值与真实值之间的平方差,然后取平均值。
- 额外的option参数可以根据需要使用,比如对损失应用一个权重。
-
返回值:
返回计算得到的损失值。
2、深度学习
(1)、深度学习基础
深度学习是机器学习的一部分,包括:
1. 数据获取
数据获取是深度学习的第一步,涉及收集相关的数据集。数据可以来自多种来源,如:
- 公开数据集:例如,Kaggle、UCI Machine Learning Repository等。
- 网络爬虫:从网页上抓取数据。
- 传感器和设备:通过物联网设备收集实时数据。
- 企业内部数据:从公司数据库或客户管理系统获取数据。
2. 特征工程
特征工程是指从原始数据中提取和选择特征,以提升模型性能的过程。这通常涉及以下几个步骤:
- 数据清洗:处理缺失值、异常值以及不一致的数据。
- 特征选择:选择对模型预测最有用的特征。
- 特征转换:例如,将分类变量编码为数值型,或者进行归一化和标准化处理。
- 特征构建:通过组合现有特征或生成新的特征来丰富数据集。
3. 建立模型
在特征工程完成后,接下来是构建深度学习模型。这一步骤包括:
- 选择模型架构:选择合适的神经网络架构,如全连接网络(FNN)、卷积神经网络(CNN)、循环神经网络(RNN)等,具体取决于任务类型。
- 配置超参数:设置学习率、批次大小、优化算法、损失函数等超参数。
- 模型训练:使用训练数据集训练模型,通过前向传播和反向传播逐步调整权重,以最小化损失函数。
4. 评估与应用
评估模型的性能是确保它在现实场景中有效的关键。包括:
- 模型评估:使用验证集(或测试集)评估模型性能,使用指标如准确性、精确率、召回率、F1-score等。
- 超参数调优:通过交叉验证等方法调整超参数以优化模型性能。
- 部署与应用:将训练好的模型部署到生产环境中,可以是Web应用、移动应用或嵌入式设备,以便为用户提供服务。
- 监测与维护:在模型投入使用后,需定期监测其性能,并根据新数据进行更新和重训练,以确保持续准确性。
其中特征工程最为重要
(2)、特征工程特点
- 数据特征决定了模型的上限
- 预处理和特征提取是最核心的
- 算法与参数选择决定了如何逼近这个上限
(3)、深度学习应用
最主要应用于计算机视觉和自然语言处理(NLP)
计算机视觉
- 图像分类:用于识别图像中的物体,如使用卷积神经网络(CNN)进行物体识别(例如 ImageNet 挑战)。
- 目标检测:检测并定位图像中的多个物体,如 YOLO 和 Faster R-CNN 等方法。
- 图像生成:使用生成对抗网络(GAN)生成新的图像,如修复图像、生成虚拟游戏角色等。
- 图像分割:将图像分为不同区域,如语义分割和实例分割,常用于医学图像分析和自动驾驶。
自然语言处理(NLP)
- 文本分类:用于情感分析、垃圾邮件检测等,如BERT、Transformers等架构。
- 机器翻译:将一种语言翻译为另一种语言,例如谷歌翻译使用深度学习技术。
- 聊天机器人:基于NLP构建对话系统,如客服聊天机器人。
- 文本生成:生成文章、故事等文本内容,如GPT模型。