添加微信:kkcoder,备注:CV群,拉你入群,一起讨论。
Hello,我是kk~
大家还记得,上次咱们看的商汤一面的内容吗?
这里~
很多人觉得有点单调,考察的面有点窄了,是的!
二面可不一样了,内容多、内容深。
1.了解这个岗位吗? 接触过图像深度学习吗?
2.研究的动机是什么?
3.了解chatgpt底层的东西吗,transformer的结构,应用是什么?
4.图像深度学习了解哪些
5.用过什么类型的大模型 (文生图)
6.有fine-tuning经验吗
7.为什么说 diffusion model好? (和 GAN对比),解原理吗
8.了解DALL-E吗
9.SVM的优化目标是什么?
a.点不可分时处理方法是什么? 引入软间隔后,优化目标会变吗? 正则化参数 C代表什么?
b.了解高斯核函数吗? 核函数的作用是什么?10.针对多分类问题,了解label smooth 方法吗?11.有一个训练任务需要部署,精度达标,但模型大且训练时间长,解决方法是什么?
a.特征降维方法有哪些? PCA的原理是什么? 通常选取多少阀值的特征
无论是深度还是广度,还是考察到了。
商汤作为人工智能的独角兽之一,算法的核心力还是值得大家期待的。
今天咱们就很多人关心的一个内容,进行详细的阐述。
因为前两天,社群里一直在讨论关于 SVM 的内容,选择第9个问题做一个解答。
SVM的优化目标是什么?
SVM的优化目标
通常来说,SVM 优化目标是找到一个能够将不同类别的数据点分隔开的超平面,并且使得这个超平面与最近的数据点之间的间隔最大。
SVM优化目标原理
最大间隔原理:SVM的核心思想是找到一个超平面,使得不同类别的样本点到这个超平面的距离最大。这个距离被称为间隔。
支持向量:支持向量是离分隔超平面最近的样本点。这些支持向量对于定义超平面以及计算间隔非常关键。
SVM优化目标
假设我们有训练数据集
,其中
是输入样本,
是对应的类别标签(+1 或 -1)。超平面可以用如下线性方程表示:
其中,
是超平面的法向量,
是偏置项。
SVM的目标是最大化间隔,即最大化支持向量到超平面的距离。对于任意样本点
,其到超平面的距离为:
优化目标即为最大化上述距离。考虑约束条件,使得所有样本点都被正确地分类,即对于每个样本点
,有:
最终,SVM的优化目标可以写成一个凸二次优化问题:
通过代码理解
import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasetsfrom sklearn.model_selection import train_test_splitfrom sklearn.svm import SVC# 生成一些示例数据X, y = datasets.make_classification(n_samples=100, n_features=2, n_informative=2, n_redundant=0, n_clusters_per_class=1, random_state=42)# 划分训练集和测试集X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 使用SVM进行训练svm_model = SVC(kernel='linear')svm_model.fit(X_train, y_train)# 获取超平面参数w = svm_model.coef_[0]b = svm_model.intercept_[0]# 画出决策边界和间隔边界plt.scatter(X[:, 0], X[:, 1], c=y, cmap='viridis')ax = plt.gca()xlim = ax.get_xlim()ylim = ax.get_ylim()# 创建网格来评估模型xx, yy = np.meshgrid(np.linspace(xlim[0], xlim[1], 50), np.linspace(ylim[0], ylim[1], 50))xy = np.column_stack([xx.ravel(), yy.ravel()])# 计算决策函数的值并画出决策边界Z = svm_model.decision_function(xy).reshape(xx.shape)ax.contour(xx, yy, Z, colors='k', levels=[-1, 0, 1], alpha=0.5, linestyles=['--', '-', '--'])# 画出支持向量ax.scatter(svm_model.support_vectors_[:, 0], svm_model.support_vectors_[:, 1], s=100, linewidth=1, facecolors='none', edgecolors='k')plt.show()
这段代码使用Scikit-learn库中的SVC模型进行训练,并绘制了数据点、决策边界、间隔边界以及支持向量的图示。
其中几个点,再给大家解释一下,更方便大家学习:
数据生成:使用make_classification生成一个简单的二维数据集,包含两个特征。
数据划分:利用train_test_split将数据集划分为训练集和测试集。
SVM模型训练:使用SVC模型进行训练,其中kernel='linear'表示使用线性核。
决策边界和间隔边界可视化:通过绘制决策边界和间隔边界,展示SVM如何找到一个能够将不同类别的数据点分隔开的超平面。
支持向量标记:在图中标记出支持向量,突显它们在定义决策边界和计算间隔时的重要性。
最后
最近我们花了几个月整理的一个内容,可meeting的idea,内容超级豪华~~~~~~
绝对绝对不可错过的一个内容~
好了,今天的内容先这样,继续想看解决什么问题,评论区留言~
都到这里了,记得点赞哦~