一文读懂蒙特卡洛算法:从概率模拟到机器学习模型优化的全方位解析

news2024/11/27 2:24:31

爱德华·蒙克(Edvard Munch)的"蒙特卡洛赌场的轮盘桌"(1892)

蒙特卡洛方法的起源与发展

1945年,在第二次世界大战即将结束之际,一场看似简单的纸牌游戏引发了计算领域的重大突破。这项突破最终导致了蒙特卡洛方法的诞生。参与曼哈顿计划的科学家斯坦尼斯劳·乌拉姆在康复期间深入思考了纸牌游戏中的概率问题。他意识到通过反复模拟,可以有效地近似复杂的概率问题。随后乌拉姆与同事约翰·冯·诺依曼讨论了这一想法,共同奠定了蒙特卡洛方法的理论基础。该方法的命名灵感来自摩纳哥著名的蒙特卡洛赌场,象征着其处理高风险和不确定性的特性。

时至今日,蒙特卡洛方法已成为机器学习领域的关键工具,在强化学习、贝叶斯滤波和复杂模型优化等方面有广泛应用。其强大的适应性和多样性使其在诞生七十多年后仍然保持着重要地位。从乌拉姆的纸牌游戏到现代复杂的人工智能应用,蒙特卡洛方法持续证明了其在处理复杂系统中的价值。

蒙特卡洛模拟的基本原理

在数据科学和机器学习领域,蒙特卡洛模拟提供了一种处理不确定性的有效方法。这种统计技术允许我们在面对复杂问题时,通过概率性方法进行决策。本文将深入探讨蒙特卡洛模拟的原理,并展示其在统计和机器学习中的实际应用。

我们首先会详细介绍蒙特卡洛模拟的理论基础,阐明其作为强大问题解决工具的核心原理。然后将通过Python实现来展示蒙特卡洛模拟的实际应用。

最后我们将重点讨论如何利用蒙特卡洛模拟来优化机器学习模型。特别是在超参数调优这一常见挑战中,蒙特卡洛方法如何提供有效的解决方案。

理解蒙特卡洛模拟

蒙特卡洛模拟是数学家和数据科学家常用的一种重要技术。它提供了一种在复杂可能性空间中进行探索的方法,通过形成基于概率的假设并逐步优化选择来寻找最佳解决方案。

这种方法的核心是生成大量随机场景,遵循预定义的过程,然后分析这些场景以估计各种结果的概率。一个形象的类比是将每个场景视为"狼人杀"游戏中的一轮。在这个游戏中,玩家通过收集证据来推断细节。每一轮都会排除某些可能性,使玩家逐步接近真相。同样,蒙特卡洛模拟中的每次迭代都提供了使我们更接近复杂问题解决方案的信息。

在机器学习领域,这些"场景"可以代表不同的模型配置、各种超参数集、数据集分割方法等。通过评估这些场景的结果,我们可以深入了解机器学习算法的行为,从而做出更明智的优化决策。

实例:估算圆周率π

为了直观理解蒙特卡洛模拟,我们可以考虑一个估算π值的例子。想象一个特殊的飞镖游戏:你被蒙上眼睛,随机向一个大正方形飞镖靶投掷飞镖。这个正方形内有一个圆形目标。目标是通过这个游戏来估计π的值。

圆的面积与正方形面积的比率是π/4。因此,如果投掷大量飞镖,落在圆内的飞镖数量与总飞镖数量的比率应该近似于π/4。将这个比率乘以4,就得到了π的估计值。

随机猜测 vs. 蒙特卡洛方法

为了展示蒙特卡洛模拟的优势,我们将其与简单的随机猜测方法进行比较。以下代码实现了这两种方法:

 #Random Guessing of Pi  
 
 # 导入必要的库
 importrandom
 importplotly.graph_objectsasgo
 importnumpyasnp
 
 # 设置猜测次数
 num_guesses=6
 
 # 生成单位圆的坐标
 theta=np.linspace(0, 2*np.pi, 100)
 unit_circle_x=np.cos(theta)
 unit_circle_y=np.sin(theta)
 
 # 进行多次猜测
 foriinrange(num_guesses):
     # 在2到4之间随机猜测pi的值
     pi_guess=random.uniform(2, 4)
 
     # 根据猜测生成圆的坐标
     radius=pi_guess/4
     circle_x=radius*np.cos(theta)
     circle_y=radius*np.sin(theta)
 
     # 创建散点图
     fig=go.Figure()
 
     # 添加猜测的圆
     fig.add_trace(go.Scatter(
         x=circle_x,
         y=circle_y,
         mode='lines',
         line=dict(
             color='blue',
             width=3
         ),
         name='Estimated Circle'
     ))
 
     # 添加单位圆
     fig.add_trace(go.Scatter(
         x=unit_circle_x,
         y=unit_circle_y,
         mode='lines',
         line=dict(
             color='green',
             width=3
         ),
         name='Unit Circle'
     ))
 
     # 更新图形布局
     fig.update_layout(
         title=f"Fig1{chr(97+i)}: Randomly Guessing Pi: {pi_guess}",
         width=600,
         height=600,
         xaxis=dict(
             constrain="domain",
             range=[-1, 1]
         ),
         yaxis=dict(
             scaleanchor="x",
             scaleratio=1,
             range=[-1, 1]
         )
     )
 
     # 显示图形
     fig.show()

这段代码生成了一系列图形(图1a到图1f),展示了随机猜测π值的结果。每次猜测都会生成一个不同大小的圆,与实际的单位圆(绿色)进行比较。






接下来,我们使用蒙特卡洛方法来估计π:

 #Monte Carlo Estimation of Pi
 
 # 导入必要的库
 importrandom
 importmath
 importplotly.graph_objectsasgo
 importplotly.ioaspio
 importnumpyasnp
 
 # 设置飞镖数量
 num_darts=10000
 darts_in_circle=0
 
 # 存储飞镖坐标
 x_coords_in, y_coords_in, x_coords_out, y_coords_out= [], [], [], []
 
 # 设置图形数量
 num_figures=6
 darts_per_figure=num_darts//num_figures
 
 # 生成单位圆
 theta=np.linspace(0, 2*np.pi, 100)
 unit_circle_x=np.cos(theta)
 unit_circle_y=np.sin(theta)
 
 # 模拟投掷飞镖
 foriinrange(num_darts):
     x, y=random.uniform(-1, 1), random.uniform(-1, 1)
     
     ifmath.sqrt(x**2+y**2) <=1:
         darts_in_circle+=1
         x_coords_in.append(x)
         y_coords_in.append(y)
     else:
         x_coords_out.append(x)
         y_coords_out.append(y)
 
     if (i+1) %darts_per_figure==0:
         pi_estimate=4*darts_in_circle/ (i+1)
 
         estimated_circle_radius=pi_estimate/4
         estimated_circle_x=estimated_circle_radius*np.cos(theta)
         estimated_circle_y=estimated_circle_radius*np.sin(theta)
 
         fig=go.Figure()
 
 
         fig.add_trace(go.Scattergl(x=x_coords_in, y=y_coords_in, mode='markers', name='Darts Inside Circle', marker=dict(color='green', size=4, opacity=0.8)))
         fig.add_trace(go.Scattergl(x=x_coords_out, y=y_coords_out, mode='markers', name='Darts Outside Circle', marker=dict(color='red', size=4, opacity=0.8)))
 
 
         fig.add_trace(go.Scatter(x=unit_circle_x, y=unit_circle_y, mode='lines', name='Unit Circle', line=dict(color='green', width=3)))
         fig.add_trace(go.Scatter(x=estimated_circle_x, y=estimated_circle_y, mode='lines', name='Estimated Circle', line=dict(color='blue', width=3)))
 
 
         fig.update_layout(title=f"Figure {chr(97+ (i+1) //darts_per_figure-1)}: Thrown Darts: {(i+1)}, Estimated Pi: {pi_estimate}", width=600, height=600, xaxis=dict(constrain="domain", range=[-1, 1]), yaxis=dict(scaleanchor="x", scaleratio=1, range=[-1, 1]), legend=dict(yanchor="top", y=0.99, xanchor="left", x=0.01))
 
         fig.show()
 
         pio.write_image(fig, f"fig2{chr(97+ (i+1) //darts_per_figure-1)}.png")

这段代码生成了另一系列图形(图2a到图2f),展示了使用蒙特卡洛方法估计π的过程。绿点表示落在圆内的飞镖,红点表示落在圆外的飞镖。






为了进一步验证蒙特卡洛方法的有效性,我们可以绘制一个图表,展示随着投掷飞镖数量的增加,估计值与真实π值之间的差异如何变化:

 # 计算估计值与真实π的差异
 diff_pi= [abs(estimate-math.pi) forestimateinpi_estimates]
 
 # 创建图表
 fig2g=go.Figure(data=go.Scatter(x=num_darts_thrown, y=diff_pi, mode='lines'))
 
 # 添加标题和标签
 fig2g.update_layout(
     title="Fig2g: Darts Thrown vs Difference in Estimated Pi",
     xaxis_title="Number of Darts Thrown",
     yaxis_title="Difference in Pi",
 )
 
 # 显示图表
 fig2g.show()
 
 # 保存图表
 pio.write_image(fig2g, "fig2g.png")

这个图表(图2g)展示了随着投掷飞镖数量的增加,估计值与真实π值之间的差异逐渐减小的趋势。

为了更全面地评估蒙特卡洛方法的性能,我们可以进行一个大规模的模拟:

 # 500个蒙特卡洛场景,共投掷1,000,000个飞镖
 importrandom
 importmath
 importplotly.graph_objectsasgo
 importnumpyasnp
 
 num_darts=1000000
 darts_in_circle=0
 
 num_scenarios=500
 darts_per_scenario=num_darts//num_scenarios
 
 darts_thrown_list= []
 pi_diff_list= []
 
 foriinrange(num_darts):
     x, y=random.uniform(-1, 1), random.uniform(-1, 1)
     
     ifmath.sqrt(x**2+y**2) <=1:
         darts_in_circle+=1
 
     if (i+1) %darts_per_scenario==0:
         pi_estimate=4*darts_in_circle/ (i+1)
 
         darts_thrown_list.append((i+1) /1000)
         pi_diff_list.append(abs(pi_estimate-math.pi))
 
 fig=go.Figure(data=go.Scattergl(x=darts_thrown_list, y=pi_diff_list, mode='markers'))
 
 fig.update_layout(
     title="Fig2h: Difference between Estimated and Actual Pi vs. Number of Darts Thrown (in thousands)",
     xaxis_title="Number of Darts Thrown (in thousands)",
     yaxis_title="Difference between Estimated and Actual Pi",
 )
 fig.show()
 pio.write_image(fig, "fig2h.png")

这个大规模模拟(图2h)清晰地展示了随着样本量增加,蒙特卡洛方法估计的精确度如何提高。

蒙特卡洛模拟在机器学习中的应用

蒙特卡洛模拟在机器学习领域有广泛的应用,其中一个重要应用是超参数调优。超参数是在机器学习算法训练之前需要设置的参数,它们不是通过训练过程学习得到的。例如在决策树中,树的最大深度是一个超参数;在神经网络中,学习率和隐藏层的数量都是超参数。

选择适当的超参数对模型性能有显著影响。一般来说研究者使用网格搜索或随机搜索来调整超参数。但是当超参数数量增加或取值范围扩大时,这些方法可能变得计算密集且耗时。蒙特卡洛模拟提供了一种更高效的替代方案,通过随机采样超参数空间,可以更快地找到优质的超参数组合。

下面我们将使用一个实际数据集来演示如何应用蒙特卡洛模拟进行超参数调优。

心脏病数据集分析

我们将使用UCI机器学习存储库中的心脏病数据集。这个数据集包含了患者的各种医疗指标,其中一些患有心脏病。数据集包含14个属性,如年龄、性别、胸痛类型、血压等。我们的目标是预测患者是否患有心脏病,这是一个二元分类问题。

首先,让我们加载并查看数据:

 importpandasaspd
 fromsklearn.model_selectionimporttrain_test_split
 fromsklearn.preprocessingimportStandardScaler, OneHotEncoder
 fromsklearn.composeimportColumnTransformer
 fromsklearn.pipelineimportPipeline
 fromsklearn.linear_modelimportLogisticRegression
 fromsklearn.model_selectionimportGridSearchCV
 fromsklearn.metricsimportroc_auc_score
 importnumpyasnp
 importplotly.graph_objectsasgo
 
 url="https://archive.ics.uci.edu/ml/machine-learning-databases/heart-disease/processed.cleveland.data"
 column_names= ["age", "sex", "cp", "trestbps", "chol", "fbs", "restecg", "thalach", "exang", "oldpeak", "slope", "ca", "thal", "target"]
 
 df=pd.read_csv(url, names=column_names, na_values="?")
 print(df.head())

数据预处理

在进行建模之前,我们需要对数据进行预处理:

 fromsklearn.imputeimportSimpleImputer
 fromsklearn.preprocessingimportLabelEncoder
 
 print(df.isnull().sum())
 
 imputer=SimpleImputer(strategy='median')
 df_filled=pd.DataFrame(imputer.fit_transform(df), columns=df.columns)
 
 print(df_filled.head())
 
 categorical_vars=df_filled.select_dtypes(include='object').columns
 encoder=LabelEncoder()
 forvarincategorical_vars:
     df_filled[var] =encoder.fit_transform(df_filled[var])
 
 scaler=StandardScaler()
 df_normalized=pd.DataFrame(scaler.fit_transform(df_filled), columns=df_filled.columns)
 
 print(df_normalized.head())

基准模型

我们首先建立一个基准逻辑回归模型:

 fromsklearn.model_selectionimporttrain_test_split
 fromsklearn.linear_modelimportLogisticRegression
 fromsklearn.metricsimportaccuracy_score, roc_auc_score
 
 df_normalized['target'] =df['target']
 df_normalized['target'] =df_normalized['target'].apply(lambdax: 1ifx>0else0)
 
 X=df_normalized.drop('target', axis=1)
 y=df_normalized['target']
 X_train, X_test, y_train, y_test=train_test_split(X, y, test_size=0.2, random_state=42)
 
 model=LogisticRegression()
 model.fit(X_train, y_train)
 
 y_pred=model.predict(X_test)
 
 accuracy=accuracy_score(y_test, y_pred)
 roc_auc=roc_auc_score(y_test, y_pred)
 
 print("Baseline Model "+f'Accuracy: {accuracy}')
 print("Baseline Model "+f'ROC-AUC: {roc_auc}')

使用网格搜索进行超参数调优

然后使用网格搜索方法进行超参数调优:

 fromsklearn.model_selectionimportGridSearchCV
 
 hyperparameters= {'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000], 
                    'penalty': ['l1', 'l2']}
 
 grid_search=GridSearchCV(LogisticRegression(), hyperparameters, cv=5, scoring='roc_auc')
 grid_search.fit(X_train, y_train)
 
 best_params=grid_search.best_params_
 print(f'Best hyperparameters: {best_params}')
 
 best_model=grid_search.best_estimator_
 y_pred_best=best_model.predict(X_test)
 accuracy_best=accuracy_score(y_test, y_pred_best)
 roc_auc_best=roc_auc_score(y_test, y_pred_best)
 
 print("Grid Search Method "+f'Accuracy of the best model: {accuracy_best}')
 print("Grid Search Method "+f'ROC-AUC of the best model: {roc_auc_best}')

使用蒙特卡洛方法进行超参数调优

最后应用蒙特卡洛方法进行超参数调优:

 fromsklearn.metricsimportaccuracy_score, roc_auc_score
 fromsklearn.linear_modelimportLogisticRegression
 fromsklearn.model_selectionimporttrain_test_split
 importnumpyasnp
 
 X_train, X_test, y_train, y_test=train_test_split(X, y, test_size=0.2, random_state=42)
 
 C_range=np.logspace(-3, 3, 7)
 penalty_options= ['l1', 'l2']
 
 best_score=0
 best_hyperparams=None
 
 for_inrange(1000):   
     C=np.random.choice(C_range)
     penalty=np.random.choice(penalty_options)
     
     model=LogisticRegression(C=C, penalty=penalty, solver='liblinear')
     model.fit(X_train, y_train)
     y_pred=model.predict(X_test)
     
     accuracy=accuracy_score(y_test, y_pred)
     roc_auc=roc_auc_score(y_test, y_pred)
     
     ifroc_auc>best_score:
         best_score=roc_auc
         best_hyperparams= {'C': C, 'penalty': penalty}
 
 print("Monte Carlo Method "+f'Best ROC-AUC: {best_score}')
 print("Monte Carlo Method "+f'Best hyperparameters: {best_hyperparams}')
 
 best_model=LogisticRegression(**best_hyperparams, solver='liblinear')
 best_model.fit(X_train, y_train)
 
 y_pred=best_model.predict(X_test)
 
 accuracy=accuracy_score(y_test, y_pred)
 print("Monte Carlo Method "+f'Accuracy of the best model: {accuracy}')

网格搜索与蒙特卡洛方法的比较

网格搜索方法通过评估超参数空间中所有可能组合的性能来选择"最佳"超参数。它使用交叉验证来评估每种组合在训练数据的不同子集上的平均性能。这种方法可以系统地探索整个超参数空间,但当超参数数量增加时,计算成本会急剧上升。

相比之下,蒙特卡洛方法随机采样超参数空间,并在整个训练集上评估模型性能。这种方法不使用交叉验证,因此可能更容易受到过拟合的影响。但是它能够更快地探索大型超参数空间,并且在计算资源有限的情况下可能更为实用。

在这个实验中蒙特卡洛方法的性能略优于网格搜索方法。这可能是因为蒙特卡洛方法能够探索更广泛的超参数组合,而不受预定义网格的限制。但是需要注意的是,这种性能差异可能因数据集和问题的不同而变化。

总结

蒙特卡洛方法源于一个简单的概率问题,已经发展成为解决复杂计算和优化问题的强大工具。在机器学习领域,特别是在超参数调优方面,蒙特卡洛方法展现出了其独特的优势。

通过本文的分析和实验,我们看到蒙特卡洛方法在估算π值和优化机器学习模型超参数等任务中的应用。这种方法的强大之处在于其能够有效地处理高维度、非线性的问题空间,为我们提供了一种在复杂系统中做出决策的有力工具。

然而,值得注意的是,蒙特卡洛方法并非万能的。在某些情况下,其他方法如网格搜索或贝叶斯优化可能更为适合。选择最佳方法应该基于具体问题、可用的计算资源以及对精度和效率的需求。

https://avoid.overfit.cn/post/679585d1481b411d88a43189e7680fb9

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2100210.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

day05 1.运算符重载

#include <iostream> #include <cstring> using namespace std;class myString {private:char *str; //记录c风格的字符串int size; //记录字符串的实际长度public://无参构造myString():size(10){str new char[size]; //构造出一个长度为10的…

解除禁售!Ozon重新开放电子产品等品类销售,Ozon出单了怎么发货?

今年6月份&#xff0c;俄罗斯电商平台Ozon暂时关闭了电子产品、汽车配件和DIY工具三大品类&#xff0c;相关数据显示&#xff0c;有69%的电子产品是中国制造的&#xff0c;如耳机耳麦、充电器、智能手机、平板电脑、电子元器件等。这项禁售政策影响了众多卖家的销售业务&#x…

电赛2024年H题智能小车基于MSPM0G3507主控MCU(利用8路灰度加上MPU6050的解决方式)具体项目报告

题目&#xff1a;自动行驶小车&#xff08;H题&#xff09; 摘要 本项目由微处理器MSPM0G3507&#xff0c;编码器电机驱动&#xff0c;8路灰度传感器指示线巡线单元&#xff0c;MPU6050六轴传感器无线直行单元&#xff0c;OLED显示人机互动单元&#xff0c;红色LED及蜂鸣器声光…

Windows Server 2019 中文版、英文版下载 (updated Aug 2024)

Windows Server 2019 中文版、英文版下载 (updated Aug 2024) Windows Server 2019 Version 1809 请访问原文链接&#xff1a;https://sysin.org/blog/windows-server-2019/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 本站将不定期发布官方原版风格月度更…

springboot驾校预约管理系统—计算机毕业设计源码25540

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于驾校预约管理系统 当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了驾校预约管理系统 &#xff0c;它彻底改变了…

【C语言从不挂科到高绩点】08-作业练习-循环结构01

Hello!彦祖们,俺又回来了!!!,继续给大家分享 《C语言从不挂科到高绩点》课程,前面课程中给大家讲解了一些常规的知识点,那么本次课,我们一起来练习挑战一下!! 本套课程将会从0基础讲解C语言核心技术,适合人群: 大学中开设了C语言课程的同学想要专升本或者考研的同…

knime安装 OCR识别节点Tess4J

Tess4J Node是一个工具&#xff0c;它把Tesseract OCR库整合到KNIME软件中。Tesseract OCR是一个光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;的库&#xff0c;可以将图片中的文字转换成电脑可以编辑的文本。 安装过程&#xff1a; 1、在knimeh…

免费ppt模板哪里找?AI智能生成指南分享

在忙碌的工作日常中&#xff0c;制作一份精美的ppt模板似乎成了一项艰巨的任务。 但别担心&#xff0c;其实掌握以下这个小技巧&#xff0c;就能让这个过程变得轻松又高效。想要让你的演示文稿在会议中脱颖而出吗&#xff1f;想要知道ppt模板怎么制作的吗&#xff1f;跟我一起…

终极解决 docker 拉取镜像失败的问题,其他类似场景也适用

国内的网络环境&#xff0c;想必大家都是知道的&#xff0c;虽说技术无罪&#xff0c;但奈何政策不允许啊&#xff0c;以下内容我在 CSDN 上发不了&#xff0c;请大家移步我的个人公 * 号&#xff1a;新质程序猿&#xff0c;查看更多原创内容&#xff0c;这里只介绍相关背景和需…

网站建设完成后, 做seo必须知道的专业知识之--蜘蛛陷阱

蜘蛛陷阱&#xff08;Spider Trap&#xff09;是指那些阻止搜索引擎蜘蛛程序&#xff08;即爬虫程序&#xff09;正常爬行和抓取网站内容的障碍物或策略。这些陷阱通常是由网站设计或技术上的某些特定元素造成的&#xff0c;它们对搜索引擎的友好度较低&#xff0c;不利于蜘蛛程…

Java-数据结构-链表-LinkedList(一) (^_−)☆

文本目录&#xff1a; ✿一、ArrayList的优点和缺陷&#xff1a; ✿二、链表&#xff1a; ❄️1、链表的概念与结构&#xff1a; ❄️2、单向不带头非循环链表的实现&#xff1a; ❄️&#xff08;1&#xff09;、操作&#xff1a; ▶display () 方法&#xff1a; ▶size…

5千多道安全生产证考试题库ACCESS\EXCEL数据库

安全生产是保护劳动者的安全、健康和国家财产&#xff0c;促进社会生产力发展的基本保证&#xff0c;也是保证社会主义经济发展&#xff0c;进一步实行改革开放的基本条件。因此&#xff0c;做好安全生产工作具有重要的意义。今天的数据即是安全生产资格证、许可证考试题库。 大…

传统管道,匿名管道

二、传统的进程间通信-管道文件 管道是UNIX系统中最古老的进程间通信技术&#xff0c;古老意味着所有系统都支持&#xff0c;早期的管道是半双工通信&#xff0c;现有的系统管道是全双工通信 管道就是一种特殊的文件&#xff0c;数据在文件中是流动的&#xff0c;读取之…

webshell绕过样本初体验

目录 一&#xff1a;前景 二&#xff1a;样本 样本一&#xff1a; 样本二&#xff1a; 样本三&#xff1a; 样本4&#xff1a; 样本5&#xff1a; 一&#xff1a;前景 在我们日常的网站中百分之一百是存在一些安全设备来拦截我们的webshell的&#xff0c;一般情况…

苹果手机微信恢复聊天记录分享:3个恢复方法,学到就是赚到

Q&#xff1a;我微信里面的聊天记录都不见了怎么办呀&#xff1f; A&#xff1a;问我你就是问对人了&#xff0c;我这里有3个超好用的微信恢复聊天记录的方法&#xff0c;不管你的聊天记录是被误删的&#xff0c;还是由于其他的原因导致丢失&#xff0c;在这3个方法中&#xf…

人工智能 | MetaLlama 大模型

llama 大模型介绍 我们介绍 LLaMA&#xff0c;这是一个基础语言模型的集合&#xff0c;参数范围从 7B 到 65B。我们在数万亿个 Token 上训练我们的模型&#xff0c;并表明可以专门使用公开可用的数据集来训练最先进的模型&#xff0c;而无需诉诸专有的和无法访问的数据集。特别…

车牌数据集车辆数据集,全手工labelimg标注 图片清晰用于训练效果很好

车牌数据集车辆数据集&#xff0c;全手工labelimg标注 图片清晰用于训练效果很好 车牌及车辆检测数据集介绍 数据集概览 本数据集旨在为车牌识别和车辆检测任务提供高质量的训练素材。数据集完全由人工使用LabelImg工具进行标注&#xff0c;确保了标注的准确性与一致性。图…

【容器安全系列Ⅴ】- Linux强制访问控制:AppArmor 和 SELinux

在本系列中&#xff0c;我们介绍了各种安全层&#xff0c;这些安全层不仅可以将容器与主机上的其他进程隔离开来&#xff0c;还可以将容器与其底层主机隔离开来。在这篇文章中&#xff0c;我们将讨论 AppArmor 和 SELinux 如何在我们之前讨论过的其他隔离层之外提供额外的限制。…

PDF的4大限制功能详解:如何保护你的文件?

PDF是我们工作中常用的文件格式之一。有时候&#xff0c;为了保护文件的内容或使用权限&#xff0c;我们需要对PDF文件进行某些限制。通过PDF编辑器&#xff0c;可以对PDF文件设置限制保护&#xff0c;下面介绍4种常见的限制功能&#xff0c;一起来看看吧。 限制功能一&#xf…

推荐大模型面临的严峻挑战

一、技术瓶颈 &#xff08;一&#xff09;可靠性与幻觉问题 大模型在运行过程中有时会出现事实性错误&#xff0c;这便是可靠性问题&#xff0c;也被称为 “幻觉”。例如&#xff0c;它可能会弄错诗词作者&#xff0c;给出错误的文学知识。这种错误并非个例&#xff0c;而是在…