Machine Learning:General Guide

在应用机器学习算法时,实践方法论能够帮助我们更好地训练模型

image-20250212142120449

模型偏差(Model Bias)

模型偏差可能会影响模型训练,如果模型过于简单,所得到的函数集合过小,会让真正可以让损失变低的函数不在可描述的函数范围里,这种情况下,即使找到一个最好的参数,也任然因为这个模型被局限,损失还是不够理想.

image-20250212142902187

为了解决模型偏差,可以重新设计一个模型,给模型更大的灵活性.以预测视频未来观看人数为例:

  1. 可以增加输入的特征,本来输入的特征只有前一天的信息,假设要预测接下来的观看人数,用前一天的信息不够多,用7天前的信息,模型的灵活性就比较大了.

  2. 也可以用深度学习,增强模型的深度.

image-20250212143556365

所以如果模型的灵活性不够大,可以增加更多特征,可以设一个更大的模型,可以用深度学习来增加模型的灵活性,这是第一个可以的解法.但是并不是训练的时候, 损失大就代表一定是模型偏差,当增加灵活性之后效果不显著,甚至没效果,那就要考虑是不是优化上出了问题.

优化问题(Optimization)

在优化时,我们一般只用到梯度下降算法,然而这种算法存在局限性,比如可能只能找到局部最优解,而无法找到一个全局最优解.

image-20250212163714616

因为这个原因,就算我们的模型灵活性足够大,因优化问题,我们也无法找到真正损失最低的参数,即使它就包含在函数集合可以找到的范围内.

判断训练时问题出在哪里?

找不到一个损失低的函数,到底是因为模型的灵活性不够,海里面没有针.还是模型的灵 活性已经够了,只是优化梯度下降不给力,它没办法把针捞出来?

通过比较不同的模型来判断模型现在是否足够大,当看到一个没有做过的新问题时,可以先跑一些比较小,比较浅的模型,再与深的模型比较,如果深的模型明明灵活性比较 大,但损失却没有办法比浅的模型压得更低代表说优化有问题,梯度下降不给力,因此要有一 些其它的方法来更好地进行优化.

过拟合(Overfitting)

过拟合指的是在训练数据上面的损失小,测试数据上的损失大,更规范的说法是指机器学习模型在训练数据上表现得过于优秀,以至于它捕捉到了训练数据中的噪声和细节,而不是数据的一般性模式.这导致模型在未见过的测试数据或新数据上的泛化能力较差,表现为测试集上的性能显著低于训练集上的性能

image-20250212165620523

数据增强

第一个解决方法是往往是最有效的方向,即增加训练集.因此如果训练集,蓝色的点变多了, 虽然模型它的灵活性可能很大,但是因为点非常多,它就可以限制住,它看起来的形状还是会很像,产生这些数据背后的 2 次曲线.数据增强(data augmentation)这个方法并不算是简单的使用了额外的数据,要根据对数据的特性以及要处理的问题的理解,来选择合适的数据增强的方式,例如将训练集里的图片左右翻转或放大截取.

image-20250212165854005

限制模型

另外一个方法是给模型一些限制,让模型不要有过大的灵活性.假设 x 跟 y 背后的关系 其实就是一条 2 次曲线,只是该 2 次曲线里面的参数是未知的,无法根据两点观得全貌.如图所示,要如何限制模型取决于对这个问题的理解.因为这种模型是自己设计的,设计出不同的模型,结果不同.对模型做出限制后,虽然说只给了 3 个点,但是因为能选择的函数有限,可能就会更容易选到跟真正的分布比较接近的函数,在测试集上得到比较好的结果.需要注意的是,如果给出的限制过多,会让模型产生模型偏差的问题,此时问题就不再是过拟合了.

image-20250212170213312

对模型进行限制的常用方法如下:

  1. 给模型比较少的参数.如果是深度学习的话,就给它比较少的神经元的数量,本来每层 一千个神经元,改成一百个神经元之类的,或者让模型共用参数,可以让一些参数有一 样的数值.全连接网络(fully-connected network)其实是一个比较有灵活性的架构, 而卷积神经网络(Convolutional Neural Network,CNN)是一个比较有限制的架构.CNN 是一种比较没有灵活性的模型,其是针对图像的特性来限制模型的灵活性.所 以全连接神经网络,可以找出来的函数所形成的集合其实是比较大的,CNN 所找出来 的函数,它形成的集合其实是比较小的,其实包含在全连接网络里面的,但是就是因为 CNN 给了,比较大的限制,所以 CNN 在图像上,反而会做得比较好.

  2. 用比较少的特征,本来给 3 天的数据,改成用给两天的数据,其实结果就好了一些.

  3. 还有别的方法,比如早停(early stopping)、正则化(regularization)和丢弃法(dropout method)

不匹配(Mismatch)

通常指的是模型在其训练数据和测试数据之间存在某种差异或不一致,导致模型的泛化能力下降.这种不匹配可以出现在多个层面,包括数据分布、特征表示、任务目标等方面.不匹配跟过拟合其实不同,一般的过拟合可以用搜集更多的数据来克服,但是不匹配是 指训练集跟测试集的分布不同,训练集再增加其实也没有帮助了.

image-20250212170836395

# Ultralytics YOLO 🚀, GPL-3.0 license import re from pathlib import Path import pkg_resources as pkg from setuptools import find_packages, setup # Settings FILE = Path(__file__).resolve() ROOT = FILE.parent # root directory README = (ROOT / "README.md").read_text(encoding="utf-8") REQUIREMENTS = [f'{x.name}{x.specifier}' for x in pkg.parse_requirements((ROOT / 'requirements.txt').read_text())] def get_version(): file = ROOT / 'ultralytics/__init__.py' return re.search(r'^__version__ = [\'"]([^\'"]*)[\'"]', file.read_text(), re.M)[1] setup( name="ultralytics", # name of pypi package version=get_version(), # version of pypi package python_requires=">=3.7.0", license='GPL-3.0', description='Ultralytics YOLOv8 and HUB', long_description=README, long_description_content_type="text/markdown", url="https://github.com/ultralytics/ultralytics", project_urls={ 'Bug Reports': 'https://github.com/ultralytics/ultralytics/issues', 'Funding': 'https://ultralytics.com', 'Source': 'https://github.com/ultralytics/ultralytics',}, author="Ultralytics", author_email='hello@ultralytics.com', packages=find_packages(), # required include_package_data=True, install_requires=REQUIREMENTS, extras_require={ 'dev': ['check-manifest', 'pytest', 'pytest-cov', 'coverage', 'mkdocs', 'mkdocstrings[python]', 'mkdocs-material'],}, classifiers=[ "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Topic :: Software Development", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Scientific/Engineering :: Image Recognition", "Operating System :: POSIX :: Linux", "Operating System :: MacOS", "Operating System :: Microsoft :: Windows"], keywords="machine-learning, deep-learning, vision, ML, DL, AI, YOLO, YOLOv3, YOLOv5, YOLOv8, HUB, Ultralytics", entry_points={ 'console_scripts': ['yolo = ultralytics.yolo.cli:cli', 'ultralytics = ultralytics.yolo.cli:cli'],}) D:\yolov\Miniconda3\envs\deepsort\python.exe D:\AA\YOLOv8-DeepSORT-Object-Tracking\setup.py usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] or: setup.py --help [cmd1 cmd2 ...] or: setup.py --help-commands or: setup.py cmd --help error: no commands supplied 进程已结束,退出代码为 1
06-18
<think>我们正在解决运行UltralyticsYOLOv8的setup.py时出现的“error:nocommandssupplied”问题。这个错误通常发生在尝试使用`setup.py`时没有指定正确的命令。在Python的setuptools中,当我们运行`setup.py`时,需要提供一个命令,例如`install`、`build`等。可能的原因和解决方案:1.**检查命令语法**:确保在运行setup.py时使用了正确的命令格式。正确的格式应该是:```bashpythonsetup.pyinstall```或者根据你的需求使用其他命令(如`develop`、`build`等)。2.**检查当前目录**:确保你在包含`setup.py`文件的目录中运行命令。3.**检查Python环境**:确保你使用的Python环境是正确的(比如虚拟环境),并且相关依赖已安装。4.**检查setuptools版本**:有时setuptools版本过旧可能导致问题,可以尝试升级:```bashpipinstall--upgradesetuptools```5.**检查setup.py文件**:如果上述步骤都不行,可能是setup.py文件本身有问题。可以检查文件内容,确保它正确调用了setuptools的setup函数。由于UltralyticsYOLOv8的安装通常推荐使用pip进行安装,而不是直接运行setup.py。因此,更好的解决方案可能是使用pip安装。使用pip安装YOLOv8:```bashpipinstallultralytics```或者,如果你想从源码安装(例如,你正在开发或修改代码),可以使用:```bashpipinstall-e.#在包含setup.py的目录中运行```这将以可编辑模式安装包,这样你对源码的修改会直接反映到安装的包中。因此,总结解决方案:-尝试使用正确的命令格式:`pythonsetup.py<command>`,其中`<command>`是有效的命令(如`install`)。-或者,更推荐使用pip进行安装:`pipinstallultralytics`(安装官方发布版本)或`pipinstall-e.`(从源码安装)。如果问题仍然存在,请提供更多关于你如何运行命令的详细信息。注意:在安装过程中,确保没有其他错误信息(如依赖安装失败)导致此问题。引用:[^1]:关于setuptools的使用,可以参考官方文档:https://setuptools.pypa.io/en/latest/userguide/quickstart.html</think>### Ultralytics YOLOv8 `setup.py` "error: no commands supplied" 解决方案 这个错误通常发生在运行 `setup.py` 时未正确指定构建命令。以下是逐步解决方案: #### 1. **检查命令语法(最常见原因)** ```bash # 错误示例(缺少命令): python setup.py # 正确格式(必须添加命令): python setup.py install # 标准安装 python setup.py develop # 开发模式安装 python setup.py bdist_wheel # 构建wheel包 ``` #### 2. **推荐使用 `pip` 安装(官方首选方式)** ```bash # 直接安装最新稳定版(避免setup.py问题) pip install ultralytics # 从本地源码安装(在包含setup.py的目录运行) pip install . ``` #### 3. **验证环境配置** - 确保在包含 `setup.py` 的目录运行命令 - 更新关键工具: ```bash pip install --upgrade setuptools wheel ``` #### 4. **检查 `setup.py` 完整性** 如果是克隆的仓库,确认文件未损坏: ```bash git checkout setup.py # 恢复原始文件 ``` #### 5. **完整安装流程示例** ```bash # 克隆仓库(如果需要源码) git clone https://github.com/ultralytics/ultralytics cd ultralytics # 安装依赖 pip install -r requirements.txt # 正式安装(任选一种) pip install . # 推荐方式 python setup.py install # 传统方式 ``` > **原因分析**:`setup.py` 是 `setuptools` 的构建脚本,必须接收明确的命令参数(如 `install/build`)。当直接运行 `python setup.py` 时,系统因缺少有效指令而报错[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vⅤ_Leon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值