这是用户在 2025-4-6 23:02 为 https://app.immersivetranslate.com/html/ 保存的双语快照页面,由 沉浸式翻译 提供双语支持。了解如何保存?

ML week3.1.3 2025.03.19 Wed PM 2:31 ・ 51Minutes 24seconds ZHANG YIWEN
ML 第 3 周课程 2025.03.19 周三 下午 2:31 ・ 51 分钟 24 秒 张一文

Attendees 1 00:00 이제 x가 하나가 아니고 두 개면 어떻게 되나 예를 들어서 나는 x가 이제는 어떤 주택에 대한 가격을 예측하려 하는데 어떤 주택에 사이즈도 있지만 방의 개수라는 이런 두 개의 값이 이제 주어지는 거예요.
参与人数 1 00:00 如果 x 不是只有一个而是有两个会怎样呢?举个例子,比如我想预测某个房屋的价格,现在不仅有房屋大小,还有房间数量这两个值。

Attendees 1 00:21 그럼 우리가 멀티플 리니어 리그레션이라고 이야기하기도 하는데 혹은 기본적으로는 이것도 다 리니어 리그레션이에요. 어쨌든 우리 모델은 리니어 펑션이다 이거죠. 여기 지금 그림에 보면 x 제로 x1 값이 무엇일 때 y 값이 뭐냐 각 그러면 이제 이런 3차원 공간 안에 이 점들이 쫙 찍히는 형태로 데이터들이 표현되겠죠. 이 데이터에 가장 부합하는 선형의 모델이라는 것은 1차원일 때는 선형의 모델이라는 게 이런 직선이죠. 2차원에서는 선형의 모델이라는 건 역시 직선 같은 건데 2차원에서의 이건 이제 평면이 여기 지금 보이죠. 이렇게 살짝 그레이로 이렇게 돼 있는 이것이 우리의 모델 식으로 보면 이거죠. 아까 이거 하나밖에 없었는데 x가 x 제로 x1 2개니까 그러면 x 제로 x1 플러스 x 1 플러스 w 1 x 1 플러스 b 이게 이제 이 평면에 방정식에 해당하는 거고 데이터에 가장 잘 부합하는 이 모델을 미니어 펑션을 찾는 게 우리가 하는 거예요. 똑같은 얘기네.
参加者 1 00:21 那么我们称之为多元线性回归,或者基本上这也是线性回归。无论如何,我们的模型是线性函数。在这里的图中,当 x0 和 x1 的值是什么时,y 值是多少,这些点会散布在三维空间中。对于最符合这些数据的线性模型,在一维时是这样的直线。在二维中,线性模型也是直线,但在二维中,这是一个平面,现在可以看到这个平面轻微地呈灰色。从我们的模型公式来看,之前只有一个,但现在有 x0 和 x1 两个,那么就是 x0 加上 x1,加上 w1x1,加上 b,这就是平面方程,我们的目标是找到最能拟合数据的线性函数。这是同样的意思。

Attendees 1 01:48 파라미터 파라미터에 의해서 어쨌든 표현된다. 이번엔 파라미터가 3개죠. 이런 세 개의 파라미터를 찾으면 되는 거예요. 이걸 웨이트라고 하고 이걸 바이어스라고 하고 똑같은 얘기네.
参加者 1 01:48 通过参数表示。这次有 3 个参数。我们需要找到这三个参数。这些称为权重,这个称为偏置,意思是一样的。

Attendees 1 02:10 다시 아까처럼 정리해 보면 지금 나는 x로부터 y를 예측하려는 건데 x는 두 개의 값 혹은 그 이상 여러 개 값으로 표현되는 거다. m 개의 데이터가 주어진다. 그죠 여기 점들처럼 우리의 모델은 뭐냐 하면 미니어 펑션. 그럼 여기 만약에 x가 3개의 값으로 표현된다면 우리가 찾아야 되는 파라미터는 웨이트가 3개 있고 바이어스가 하나 있고 총 4개의 파라미터를 찾으면 되는 거겠죠. 뭘 미니마이즈 할 거냐 에러는 똑같이 미 스퀘어 에러로 정리할 수가 있을 테고 그래서 yh이라는 건 바로 이렇게 계산되는 거죠. 그레디언 디센트를 하겠다. 그레디언트를 계산해야 될 텐데 그러면 지금 우리가 찾고자 하는 파라미터 즉 변수가 여러 개 있단 말이죠. 아까는 하나만 있었지만 w 제로에 대한 2분, w1에 대한 미분, w2에 대한 미분, b에 대한 미분을 각각 계산해 보면 될 거고 예. 근데 뭐 계산해 보나마나 아까랑 똑같이 생긴 거지.
与会者 1 02:10 让我们再次整理一下,现在我想从 x 预测 y,其中 x 可以用两个值或更多个值来表示。给定 m 个数据。对于这些点,我们的模型是什么?是线性函数。如果 x 由 3 个值表示,我们需要找到的参数是 3 个权重和 1 个偏置,总共 4 个参数。我们要最小化什么?误差仍然可以用均方误差来表示,因此 yh 是这样计算的。我们将进行梯度下降。需要计算梯度,现在我们要找的参数,即变量,有多个。与之前只有一个不同,我们将分别计算 w0、w1、w2 的导数和 b 的导数,是的。但计算结果基本上与之前一样。

Attendees 1 03:31 여기에는 단 x 제로가 미분의 결과로 등장할 거고, w1으로 미분했을 때 x1이 등장할 거고 그다음에 x2가 등장할 거고. 그렇죠. 여기에는 아까처럼 1이 가까워지는 거
与会者 1 03:31 在这里,x0 将出现在导数结果中,当对 w1 求导时,x1 会出现,然后是 x2。是的,这里和以前一样,1 会接近。

Attendees 1 03:47 가만히 있어 그러면 똑같네. 아까랑 뭐 더 이상 얘기할 게 없네. 왜 얘기하지? 우리가 이거 이제 베터 폼으로 표현하려고 그래요.
与会者 1 03:47 保持静止就一样了。刚才的对话好像没什么可说的了。为什么不说话?我们现在想用更好的形式来表达。

Attendees 1 04:00 뭐냐 아까는 우리가 포문을 이렇게 돌려서 각각의 데이터에서 뭘 누적하고 이 값을 이렇게 했는데 이거 전체를 데이터들을 이제 행렬 벡터로 표현한 다음에 넌 파일을 써서 전체 계산을 그냥 한 줄로 딱 써서 하고 싶다 이거죠. 데이터 x는 어떻게 주어지냐 하면 여러 개의 피처 값으로 표현되는 데이터 1번 데이터 2번 데이터 3번 이렇게 해서 총 m 개의 데이터가 주어진다. 그럼 그거 전체를 행렬로 이렇게 표현할 수가 있겠죠. m 바. 네 만약에 피처의 개수가 n이라면 n 의 행렬이 트레이닝을 위한 데이터로 주어지며 y는 뭐냐 하면 각각의 m 개 데이터에서 각각 y 값이 있겠죠. 해당되는 타겟 밸류인 y 값이 있다. 사이즈 m인 벡터 y가 주어지는 거고 파라미터는 웨이트라고 하는 것이 몇 개 있냐 하면 지금 n개의 피처가 있다 그랬어요. 예를 들면 지금 여기 두 개의 피처 값으로 x가 표현되는 거잖아요. 그럼 두 개의 웨이트 값이 이제 앞에 개수가 이 파라미터로 정의가 돼 있는 거죠.
与会者 1 04:00 是这样,刚才我们通过循环遍历每个数据来累积值,现在想用矩阵向量表示所有这些数据,然后用 Python 文件一行代码直接计算。数据 x 是如何给出的呢?它由多个特征值表示,有第 1 个数据、第 2 个数据、第 3 个数据,总共有 m 个数据。那么可以将所有数据表示为一个 m 行的矩阵。如果特征数量是 n,那么就是一个 n 行的矩阵,用于训练数据。y 是什么呢?就是每个 m 个数据各自对应的目标值 y。给出一个大小为 m 的向量 y。参数是权重,如果有 n 个特征,就会有 n 个权重值。例如,这里 x 由两个特征值表示,那么就有两个权重值定义这些参数。

Attendees 1 05:17 n개의 피처로 정의되는 데이터라 그러면 파라미터가 n 개 있을 테고 사이즈 앤 벡터가 되겠죠. 여기에 지금 써 있지 않지만 바이어스 b가
如果是由 n 个特征定义的数据,那么参数将会有 n 个,大小将是一个向量。这里虽然没有写,但偏置项 b 将会

Attendees 1 05:35 우리의 모델은 일단 현재 파라미터에서 예측 값은 첫 번째 데이터에 대한 예측 값은 어떻게 계산되나 네 w 제 x 제로 w1 x 1 플러스 b 되겠죠. 두 번째 예측 값은 마찬가지로 두 번째 데이터였어. 세 번째는 세 네 이걸 전체를 하나로 행렬로 표현해서 쓰면 이렇게 m 개 y h 값을 갖는 벡터는 m 바이 n 데이터셋 전체를 나타내는 x 행렬 곱하기 파라미터 플러스 b가 되겠죠. 이렇게
我们的模型,首先在当前参数下,第一个数据的预测值将如何计算呢?是 w 转置乘 x 再加上 b。第二个预测值同样是第二个数据,第三个是第三个,依此类推。如果将这全部用矩阵表示的话,那么 m 个 y 的 h 值向量是 m 乘 n 的整个数据集的 x 矩阵乘以参数再加上 b。就是这样

Attendees 1 06:26 네 요 곱이라는 거는 y h 1이라는 걸 계산하는 거는 요거 곱하기 요거가 되니까 w 제 x 제로 w1 x1 w2 x 2 이렇게 쭉 되는 거죠. 네 코스트 계산은 미인 스퀘어를 계산한다. 이것도 행렬식으로 우리가 표현해 보면
是的,y 帽的计算是这样的,这是乘积,所以是 w 零 x 零,w1x1,w2x2,这样依次排列。是的,成本计算是计算均方误差。如果我们用矩阵形式表示的话

Attendees 1 06:56 y 값 m 개 y 햇 값 m계를 나타내 벡터 미리 차이의 제곱을 한 다음에 모든 엘리먼트 값을 다 더하면 되는 거니까.
对于 y 值,m 个 y 帽值表示向量,先计算差值的平方,然后将所有元素值相加就可以了。

Attendees 1 07:13 네 혹은 사실은 이거는 yh의 yh의 x w 플러스 b죠. 이거 마이너스 y의 제곱을 계산하는 건데 행렬식으로 표현하면 사실은 이거 yh 마이너스 와 트랜스포즈 곱하기 yh 마이너스 와 자기 자신을 곱하는 거예요. 예를 들면 우리가 a b c 엘리먼트가 있는 벡터를 자신의 트랜스포즈와 이렇게 곱하면 이너 프로덕트 하니까 제 마우스로 쓰니까 지금 글자가 지원이 배치돼 있는데 이게 바로 이제 이거죠. a 제곱 플러스 b 제곱 플러스 c 제곱 이렇게 되는 거잖아요. 그렇죠 그래서 이제 이런 식으로 쓸 수도 있어요.
参会者 1 07:13 是的,或者说,这其实是 yh 的 yh 的 x w 加 b。这是在计算减去 y 的平方,如果用矩阵形式表示的话,实际上是这个 yh 减去的转置乘以 yh 减去的乘以自身。例如,我们有一个包含 a b c 元素的向量,如果用自身的转置这样相乘,那就是内积,所以我用鼠标写的时候,字符现在是按照这种方式排列的,这就是现在的情况。a 平方加 b 平方加 c 平方,就是这样。对吧?所以现在可以这样写。

Attendees 1 08:04 그다음에 그레디언센트 하기 위해서 우리가 해야 되는 게 뭐냐 그레디언트를 계산하는 거죠. 네 그레디언트는 지금 여기 괄호 안에 써 있는 이 행렬식 있잖아요. 네 코스트를 나타내는 행렬식. 네 이거 싹 괄호를 풀어서 곱해서 괄호를 풀은 다음에 w라는 벡터로 미분 벡터 미분을 하면 결과는 이렇게 나 리니어 LG 블라에 익숙한 사람이면은 뭐 당연하지 이렇게 하는 사람도 있고 뭐야 이거 티는 뭐고 막 이런 사람도 있을 수 있는데 티는 트랜스 포즈죠. 그래서 이걸 그냥 풀어서 이렇게 따져보면 또 이렇다는 걸 알 수도 있어요. 내가 벡터 미분에 익숙하지 않아도 뭐냐 하면 지금 그레디언트는 예를 들어서 w 제로로 미분한 건 어떻게 계산하냐 면 이렇게 계산하잖아요.
参会者 1 08:04 接下来,为了进行梯度计算,我们需要做的是什么呢?就是计算梯度。是的,梯度是在这个括号里写的矩阵式。是的,表示代价的矩阵式。是的,将这个括号打开,相乘后再打开括号,然后对 w 向量进行微分(向量微分),结果是这样的。对于熟悉线性回归的人来说,这是很自然的,有些人这样做,有些人可能会问这是什么,这个 t 是什么。t 是转置。所以如果把它展开来看,你就能理解了。即使对向量微分不熟悉,那么例如梯度对 w 零的微分是如何计算的,就是这样计算的。

Attendees 1 09:00 yh 마이너스 y를 i 번째 데이터에 yh 마이너스 y에다가 x 제로 곱한 거 를 첫 번째 데이터 그다음에 여기 시그마 했으니까 두 번째 데이터 세 번째 데이터 쭉 누적한 다음에 평균 내는 거죠. 그러니까 풀었으면은 이렇게 되는 거예요. 예를 들어서 w제로 미분한 값이라는 것은 첫 번째 데이터에서 요거 곱하기 x 제곱, 두 번째 데이터에서 요거 곱하기 x 제곱 이렇게 쭉 하는 거죠. 그래서 m으로 나누면 되는 건데 그러니까 이걸 전체를 행렬로 표현하니까 오케이 요 값은 어떻게 계산되냐 하면 요거 곱하기 요거네. 그렇죠 첫 번째 데이터에 대한 y h 마이너스 y 곱하기 x 제로 두 번째 데이터에 대한 yh 마이너스 와 곱하기 x 제로 세 번째에 대한 y h 마이너 곱하기 x 제로 이렇게 가는 거 아니에요? 그렇죠 그러니까 요거 요건 뭐죠?
与会者 1 09:00 对于负 y 除以 i 次数据,将负 y 乘以 x 零,然后累积第一个数据,接着是第二个数据,第三个数据,最后取平均。就是这样解决的。例如,对 w 零求导的值是第一个数据乘以 x 的平方,第二个数据乘以 x 的平方,以此类推。用 m 除就可以了。所以将整个表达式用矩阵表示时,如何计算这个值呢?就是这个乘以那个。对吧?第一个数据的 yh 减 y 乘以 x 零,第二个数据的 yh 减 y 乘以 x 零,第三个数据的 yh 减 y 乘以 x 零,就是这样进行的。对吗?那么这个是什么呢?

Attendees 1 10:00 요거는 y h 벡터 마이너스 y 이건 가만히 보면 여기에 우리가 엑스가 어떻게 생겼냐 하면 x가 이렇게 생겼어요. 여기는 데이터가 각 로우에 이렇게 위치하고 있는 거죠. 이건 보니까 똑같은 건데 데이터가 컬럼으로 위치하게끔 요 모양이 생겼잖아요. 그렇죠 x의 트랜스포즈 그러니까 이거 한꺼번에 행렬 표현으로 쓰면은 요렇게 쓰면 되는구나라는 걸 우리가 따져보면 쉽게 알 수 있죠. 혹은 이거 풀어서 w로 벡터 미분하면은 몇 시에 나옵니다.
与会者 1 10:00 这个是 yh 向量减 y。仔细看,我们的 x 是这样的。数据位于每一行。这看起来是一样的,只是数据现在是按列排列。对吧?x 的转置。所以如果我们一次性用矩阵表示,就是这样写的,这是我们可以轻易理解的。或者如果将其展开并对 w 向量求导,会在几点钟出现。

Attendees 1 10:50 예 b에 대한 기본 값은 마찬가지로 풀어서 쭉 쓰면 이렇게 되는데 이거는 요거 곱하기 요거 계산한 거예요.
与会者 1 10:50 是的,b 的默认值同样可以展开写成这样,这是通过乘这个计算出来的。

Attendees 1 11:11 예 그러니까 앞서 우리가 한 거랑 내용은 똑같고 표현만 그냥 행렬 표현을 한 거예요. 그래서 전체 그럼 진행되는 알고리즘을 이제 표현해 보면 오케이 데이터는 m 바이n의 행렬과 사이즈 m인 레이블을 나타내는 벡터가 주어진다는 거고 우리는 우리가 얻어내야 되는 파라미터는 뭐죠? n개의 w와 1개의 바이러스 w는 그래서 사이즈 n인 벡터로 표현할 수가 있을 테고 다음 과정을 반복한다. 볼드체로 좀 이제 써 있는 게 벡터 행렬들이죠. 예측 값 m 개는 이렇게 계산하면 나온다. w와 b가 주어졌을 때 그레디언트는 이렇게 계산된다. 그래서 그레디언트의 반대 방향으로 WRB를 업데이트한다. 네 코스트는 아까와 마찬가지로 이렇게 해산 이거를 코스트가 충분히 작아질 때까지 계속 반복하면 마지막에 남는 w와 b가 우리의 모델로서 얻어지는 거다. 이
与会者 1 11:11 是的,就是我们之前做的内容完全相同,只是用矩阵表示而已。因此,如果我们展示整个进行的算法,那么数据是一个 m x n 的矩阵,和一个大小为 m 的标签向量。我们需要获得的参数是什么?n 个 w 和 1 个偏置 w,所以可以表示为一个大小为 n 的向量。然后重复以下过程。现在用粗体写的是向量和矩阵。给定 w 和 b 时,m 个预测值可以这样计算。梯度可以这样计算。然后朝着梯度的相反方向更新 WRB。是的,代价与之前一样,如果代价足够小,就继续重复,最后剩下的 w 和 b 就是我们得到的模型。

Attendees 1 12:32 네 그래서 같은 거를 여기 코드의 일부를 지금 제시했어요. 이런 식으로 된다. XY 데이터가 주어졌다. x는 이제 두 개의 값으로 표현돼 있죠. 그래서 x 제로 x 1 네 이거 플라 해 보면 요 3차원 공간 안에 데이터가 이렇게 5개 주어졌다는 걸 볼 수가 있고 예측 값을 계산하는 거는 주어진 행렬과 벡터로 이렇게 연산하면 되는데 우리가 넌 파이 가져오면 그냥 도트 한 줄로 이렇게 딱 쓰면 돼요. 주어진 여기 보면 이게 뭐 있어요? 5 y 2의 매트릭스 행렬이죠. 5 5 2의 행렬로 x가 주어진 거예요. 그러니까 5개의 데이터인데 2차원 데이터 네 그거 가지고 w 곱해서 b 더하면 오케이 y h이 이제 5개가 쫙 5개의 엘리먼트를 받는 y h 벡터가 계산이 될 거고 네 코스트 yh 마이너스 와 제곱의 엘리먼트를 다 더한 거 그레디언트 y h과 에러를 계산한 다음에 에러를 이제 y h을 계산한 이후에 그거 빼기 y를 한 걸 이걸 에러라고 해놨네요.
与会者 1 12:32 是的,所以我现在展示了代码的一部分。就是这样。给定 XY 数据。x 现在用两个值表示。那么,如果将 x 零和 x1 相加,你可以看到在三维空间中有 5 个数据点。计算预测值只需使用给定的矩阵和向量进行运算,如果我们使用 NumPy,只需一行点积就可以了。从这里可以看到,这是一个 5 乘 5 乘 2 的矩阵。也就是说,这是 5 个数据点,每个数据点是二维的。将其与 w 相乘并加上 b,就得到了 5 个元素的 yh 向量。然后计算成本,即 yh 减去 w 的平方的所有元素之和,计算梯度和误差,在计算 yh 之后,减去 y,这就是所谓的误差。

Attendees 1 14:08 네 그리고 아까처럼 DJDW와 DJ DB를 이것도 마찬가지 어떻게 계산합니까? x t는 요게 요 행렬의 트랜스포즈를 계산하는 거죠. 넌 파이에서 제공하는 거예요. 이것과 에로라고 돼 있는 y n 마이너스 y를 도트 프러덕트 계산해서 m으로 나누다 DJ DB는 그리고 에러 엘리먼트를 다 합한다 이렇게 계산 다 한 줄로 표현되는 거죠. 논파이 썼기 때문에 더 이상 포문 같은 건 없어요. 여기는 포문이 있죠. 이게 인터레이션을 여러 번 반복하는 거니까 그레디언 디센트는 아까 마찬가지로 데이터 주고 파라미터 여기서 w는 이제 단일 스칼라가 아니라 벡터가 되겠죠. 여러 개 엘리먼트를 가면 그다음에 러닝 레이트와 몇 번 반복할 거냐 주면은 얘는 반복 횟수만큼 폼을 진행하는데 그때마다 뭘 하냐면 그레디언트 계산하고 이렇게 해서 알죠.
与会者 1 14:08 是的,就像刚才那样,如何计算 DJDW 和 DJDB?xt 是计算这个矩阵的转置。这是 NumPy 提供的。通过计算与错误(yn 减去 y)的点积,然后除以 m 来计算。DJDB 是将所有误差元素相加。这就是全部,因为使用了 NumPy,所以不再需要像 for 循环这样的东西。这里有一个 for 循环,因为这是多次迭代。梯度下降法和刚才一样,提供数据和参数,这里的 w 不再是单个标量,而是一个向量,有多个元素。然后给定学习率和迭代次数,它会按照迭代次数进行,每次都计算梯度等。

Attendees 1 15:23 그다음에 그레디언트를 가지고 w와 b 파라미터를 업데이트하고 네 반복하면 여기 이 경우에 보면 w는 여기 보면 NP 제로스 그래서 주어진 트레이닝 데이터에 쉐이크 1 하니까 이게 아마 2가 되겠죠. 우리 데이터로 같으면 5 5 2에 두 번째 컬럼이 2개니까 그래서 두 개의 제로 값을 갖는 2천 그러니까 사이즈 2인 벡터를 지금 이니셜 라이즈 하는 거고 제로 제로 w는 제로 제로고 b는 0으로 인시라이즈 했고 인터레이션 알파는 아까랑 똑같아 그레디언 디센트 그러면 4 무늬 계속 돌면서 w와 b 값들을 업데이트하겠죠. 중간중간에 프린트 해보게 한 거고 네 1만 번 진행한 다음에 w와 b를 딱 찍어보니까 이게 최종 값이에요. w 2개의 값이죠. 137과 22, b는 하나의 97 이게 우리의 어디신 모델이다
接下来,使用梯度来更新 w 和 b 参数,然后反复执行。在这种情况下,你可以看到 w 是 NP 零,所以对于给定的训练数据,如果抖动 1,那么可能会变成 2。对于我们的数据,5 5 2,第二列有 2 个,所以现在正在初始化一个大小为 2 的向量,其零值为零零。w 是零零,b 初始化为 0,迭代阿尔法与之前相同,梯度下降,然后继续循环并更新 w 和 b 的值。中间会打印出来,在进行了 1 万次迭代后,查看 w 和 b 的最终值。w 有两个值:137 和 22,b 是 97,这就是我们的模型。

Attendees 1 16:32 뭘 어떻게 하는 모델이죠? 코스트가 제일 미니멈이 되는 파라미터들. 네 그래서 이것도 기록돼 있는 코스트 값을 한번 찍어보니까 네 인터레이션이 진행되면서 코스트 값이 이렇게 샤프하게 떨어지는 걸 볼 수가 있고 합수된 모델을 또 이렇게 그림으로 그려보려니까 이 경우에는 여기 보면 3D 프로젝션 이런 그냥 주어진 걸 갖다 쓰면 될 것 같고 거기 3차원 공간에 스케트 플러을 했어요. x 값이 지금 두 개로 표현되는 거죠. 거기다 y니까 x 제로 x1 값이 뭐일 때 y 값은 뭐다 를 여기 5개의 데이터에 대해서 이렇게 찍어본 거죠. 5개의 포인트가 3차원 공간 안에 있고 여기에 잘 맞는 평면을 이제 찾으려는 거예요. 모델이 찾아준 걸 디스플레이 하기 위해서 여기서는 메쉬 그리드라는 걸 썼네요. 여기 1에서 2 범위 안에 0.1 단위로 2에서 6 범위 안에 0.1 단위로. 네 이게 지금 아마 x 제로 여기 x1인데 그냥 일반적으로 XYZ로 지금 표현을 해놓은 것 같아요.
这是什么模型?是使成本最小的参数。是的,所以查看了记录的成本值,可以看到在迭代过程中,成本值急剧下降。绘制拟合模型时,在这种情况下,使用 3D 投影,直接使用给定的就可以了。在三维空间中进行了散点图。x 值现在用两个表示。y 是什么,当 x 零 x1 为某个值时 y 是多少,对 5 个数据点进行了标记。5 个点位于三维空间中,现在要找到一个最适合的平面。为了显示模型找到的内容,这里使用了网格。在 1 到 2 范围内以 0.1 为单位,在 2 到 6 范围内以 0.1 为单位。这可能是 x 零 x1,但现在用 XYZ 表示。

Attendees 1 17:45 이건 뭐냐 하면 요 범위 안에 그리드 같이 쭉 말하자면 메시 포인트들을 잡는 거죠. 이 안에 XY가 요게 x고 예를 들면 이게 y예요. 지금 여기 표현된 거는 이런 점들을 쭉 잡은 거예요. 그리고 각각의 점에 대해서 y 값이 얼마인지를 찍어서 연결하려는 거죠. 그래서 이번 g 값을 g 값이면 여기 XY 그다음에 이걸 g라고 지금 표현한 것 같아요. 이 메시 그리드에서는 이때는 이 모델에 의하면 g 값이 얼마냐 이때는 집값이 얼마냐 이걸 쭉 계산해서 플롯 지금 하려는 거 어 2차원적인 값들을 쭉 계산해서 플러트 하려는 거예요. g 값은 어떻게 계산하냐면 w 제로 x 제로 w1 x 1 플러스 b 이게 우리 모델이죠. 여러 개의 값에 대해서 각각 이때 y 값이 어떻게 되나 해가지고 플러스 이때는 플러스 서피스라는 걸 썼어요.
与会者 1 17:45 这是什么呢,就是在这个范围内,像网格一样,说白了就是捕捉网格点。这里的 XY,这个是 x,举个例子,这个是 y。现在表达的是这些点被捕捉到了。然后对于每个点,标记出 y 值是多少,并想要连接起来。所以这次的 g 值,如果是 g 值的话,就是这里的 XY,然后这个现在看起来被称为 g。在这个网格网格中,根据这个模型,g 值是多少,这时房价是多少,然后计算并绘制二维值。g 值是如何计算的呢?w 零乘 x 零加 w1 乘 x1 再加 b,这就是我们的模型。对于多个值,分别计算 y 值,然后使用了加表面。

Attendees 1 18:57 그래서 x y g 값을 이 안에 이렇게 플러 하게 하면 이런 서피스를 얘가 그려주고 여기 보면 쿨 웜이라는 거는 값이 큰 거 작은 거에 따라서 붉은색부터 파란색까지 컬러를 주라는 거고 알파 0.5는 불투명도를 0.5를 주라는 거예요. 이런 거 안 주면은 이 포인트 찍해진 데이터 가려서 안 보일 테니까 이제 그렇게 그리라고 해본 거죠. 그러면 이런 이제 결과를 여러분들이 볼 수가 있죠. 5개의 데이터에 가장 적절히 맞는 리니어 펑션 그러면 이거 찾은 거
与会者 1 18:57 所以如果在 x y g 值中这样填充,它就会绘制出这样的表面。看这里,酷暖是指根据值的大小从红色到蓝色变化的颜色,alpha 0.5 是指不透明度为 0.5。如果不这样设置,这些标记的数据点就会被遮挡看不见。那么这样,你们就可以看到这个结果了。找到最适合这 5 个数据的线性函数。

Attendees 1 19:46 네 이거는 참고로 우리가 지금 이렇게 표현했는데 예를 들어서 x가 두개의 값으로 표현된다 그러면 x는 이렇게 표현되고 w는 이렇게 b는 하나의 스칼라 모델은 이렇게 되고 데이터셋 전체는 이런 행렬이 되고 예측 값은 모델에 의해서 이렇게 이제 이게 모델을 나타내는 거고 x가 주어지면 y 값을 계산한다 이거죠. 근데 경우에 따라서는 약간 이렇게 표현하고 코드도 이렇게 작성된 것들이 있어요. 예를 들어 우리 책에도 파이썬 머신러닝 책에도 12장 저 뒤에 가면은 예측하는 걸 이렇게 표현하는 여기 b는 어디 갔어? b를 이 안에 싹 집어넣어서 이 표현했어요.
参与者 1 19:46 是的,这是我们现在表达的方式。例如,如果 x 表示两个值,那么 x 可以这样表示,w 也是这样,b 是一个标量,模型就是这样的,整个数据集是这样的矩阵,预测值是由模型这样计算的。当给定 x 时,计算 y 值。但是在某些情况下,它也会这样表示,代码也是这样写的。例如,在我们的书中,在机器学习 Python 书的第 12 章后面,预测是这样表示的,这里的 b 去哪了?将 b 直接嵌入到这个表达式中。

Attendees 1 20:34 그러면 x 곱하기 w 이렇게 하게 되면 요거 곱하기 요거 요거 곱하기 요거 그다음에 b가 나와야 되는데 b를 이 안에 집어넣어버렸으니까 x도 여기에서 더미로 일을 이렇게 싹 설정하고 그럼 표현식을 좀 간단하게 쓰기 이렇게 해서 이렇게 하는 그러니까 모델 자체는 똑같은데 x를 앞에 이렇게 일들을 잔뜩 넣어서 표현하고 네 그러면 예측하는 모델로부터 계산하는 건 그냥 파라미터를 웨이트와 바이어스 구분하지 않고 그냥 n 플러스 1의 파라미터가 있다. 한꺼번에 이렇게 딱 쓰는 그런 표현을 쓰기도 한다 이거죠. 이거 보고 이거 다른 건가 헷갈릴 필요가 없어요. 내용은 같은 거
参与者 1 20:34 那么,x 乘以 w 是这样的,这个乘以那个,那个乘以这个,然后 b 应该出现,但是已经将 b 嵌入到其中,所以 x 也在这里设置为虚拟,这样就可以简化表达式。所以模型本身是一样的,只是在前面添加了许多 x 来表示。那么从预测模型计算时,不区分权重和偏置,而是有 n+1 个参数,一次性写入。这就是有时使用的表达方式。不需要为此感到困惑,内容是相同的。

Attendees 1 21:26 네 그러면 이제 주요 할 얘기는 다 했고 이 같은 얘기를 두 번 한 셈인데 한 번은 이제 우리가 행렬식으로 쭉 표현한 거고 넌 파일을 써서 이제 한 줄로 그냥 다 코드를 작성한 거죠. 네 처음에 우리가 이런 이야기를 시작하면서 이거 원래는 어떻게 구하냐 하면 이거 미분에서 제로 찾으면 되는 거잖아 이렇게 이제 생각할 수가 있단 말이죠. 그래서 원래 그렇게 하면 돼요. 그래서 리뉴얼 리브레션은 클로스트 폼 솔루션을 찾을 수가 있다. 코스트 펑션은 우리가 벡터 표현으로 나타내면 코스트 펑션은 요거예요. 예측값과 실제 값의 차이의 제곱의 합 예측 값이 이거니까 xw니까 이렇게 나타낼 수가 있죠. 이거 행렬식으로 표현하면 이게 트랜스포즈 곱하기 자기 자신이 되는 거고 이거 바로 풀어가지고 w 벡터에 대해서 미분하면 이런 식을 얻어요. 네 앞에 우리가 이렇게 풀어서도 따져봤고 요거 행렬 미분하면 이렇게 된다고 얘기했죠.
与会者 1 21:26 好的,现在我们已经讨论了主要内容,可以说是重复了一遍。一次是我们用矩阵形式表达,另一次是你用文件写了一行代码。是的,当我们开始讨论这个问题时,我们会想,原本是如何求解的呢?无非就是在微分中找零点。所以原本就是这样做的。因此,重新回归是可以找到闭合形式解的。代价函数,如果我们用向量表示,就是预测值和实际值之间差的平方和。因为预测值是 xw,所以可以这样表示。用矩阵形式表达,就是转置乘以自身。对 w 向量求微分,就能得到这样的式子。是的,我们之前已经推导过,并说过对矩阵求微分会是这样。

Attendees 1 22:33 이게 사실 이거의 제곱과 같은 식이니까 우리가 생각해 보면 이거 이 앞으로 내려오고 yh 마이너스 y 남고 이 안에 거 ws 미분하면 x가 남겠구나. 그런데 이거 행렬식으로 표현하면 요 앞에 트랜스포즈 형태로 남게 되는 거죠. 어쨌든 이렇게 이제 풀 수가 있어요. 그러니까 오케이 미분한 다음에 이 콜 제로로 넣으면 되잖아. 그렇죠 제로 넣으면 돼요. 이걸 만족하는 w를 찾으면 되는 거죠. 이거 풀면 이렇게 되고 마이너스 x 트랜스 포즈 y를 한쪽으로 넘기면 이렇게 되고 우리가 구하려는 건 w니까? 나머지를 역행렬로 오른쪽으로 옮기면 이런 식을 얻을 수가 있어요. 이건 다 주어진 거예요. 그렇죠 x 데이터로 주어진 거고 y 데이터로 주어진 거죠. 그러니까 x와 y가 딱 주어지면 나는 그레디언 디센트고 이건 필요 없고 그냥 트랜스포즈에서 자기 자신 한 다음에 역행렬 구해서 이렇게 이렇게 계산하면 행렬 연산하면 w가 탁 나오는 거예요.
与会者 1 22:33 事实上,这个平方式,如果我们想一想,前面下来,yh 减 y 保留,在其中对 ws 求微分,会剩下 x。但是用矩阵形式表达,就会以转置的形式保留。无论如何,现在可以这样求解。也就是说,微分后将其置为零不就行了吗?是的,置为零就可以。找到满足这个条件的 w。求解后会是这样,将-x 转置 y 移到一边,我们要求的是 w?将其余部分移到右侧的逆矩阵,就可以得到这样的式子。这些都是已知的。是的,x 数据是给定的,y 数据也是给定的。所以只要 x 和 y 确定,我就不需要梯度下降,直接通过转置乘以自身,然后求逆矩阵,这样计算,进行矩阵运算,w 就会直接出来。

Attendees 1 23:34 옵티멀한 w가 그럼 그렇게 해야지 지금까지 무슨 얘기한 거야? 이거는 아까 질문 한 거랑 이제 관련이 있는 거죠. 요 리니어 리그레션 모델 같은 경우에만 이렇게 할 수가 있고 이제 어떤 다른 모델이 더 복잡한 어떤 형식 여러 레이어의 신경망으로 표현되는 파라미터 몇만 개짜리 어떤 모델 이런 거는 이제 이렇게 계산할 수가 없는 그래서 일반적으로 우리가 사용하는 건 이제 끝까지 그레디언트 디센트 혹은 그거에 준하는 어떤 방법을 써서 파라미터를 찾는 과정을 진행한다. 또 하나 리뉴얼 리그레션조차도 이렇게 계산할 수 있는 건 사이즈가 작은 경우에만 그렇고 만약에 x가 무슨 이미지 데이터처럼 몇만 개의 값으로 표현되고 데이터도 몇만 개가 있고 그러면 이 x라는 행렬의 차원이 엄청 클 거 아니에요? 그거에 역행렬을 구하고 막 해야 되는 거기 때문에 이거는 간단치 않을 수 없는 거죠.
参会者 1 23:34 如果是最优的 w,那么就应该这样做。到目前为止我们说了什么?这与之前的问题有关。对于线性回归模型,只能这样做,而对于其他更复杂的模型,比如有多层神经网络,参数可能有几万个,就无法这样计算了。所以我们通常使用梯度下降或类似的方法来找到参数。另外,即使是线性回归,也只有在规模较小的情况下才能这样计算。如果 x 是图像数据,包含几万个值,数据也有几万个,那么 x 矩阵的维度将会非常大。计算逆矩阵等操作并非易事。

Attendees 1 24:44 만약에 우리가 어떤 수치 데이터 그런데 사이즈도 작고 그런 데이터 같으면은 리니어 리그레션을 하는 예를 들어 라이브러리 함수 같은 것도 그냥 이런 계산을 해요. 이걸 우리가 노멀 리케이션이라고 얘기를 하고 노멀리케이션을 그냥 쫙 풀어서 한 w가 바로 나오는 그렇지만 사이즈가 굉장히 크거나 모델이 선형 펑션이 아니거나 그런 경우에는 다 이런 이터러티브한 방법을 써서 우리가 파라미터를 옵티마이즈 해야 되는
参会者 1 24:44 如果我们处理的是一些数值数据,规模较小,那么对于线性回归,例如库函数也会直接进行这样的计算。我们称之为正则化,直接求解可以得到 w。但是对于规模非常大或模型不是线性函数的情况,我们必须使用迭代方法来优化参数。

Attendees 1 25:13 네 혹시 여기까지 질문 있는 거 있을까요?
参会者 1 25:13 是的,有什么问题吗?

Attendees 1 25:21 네 이거 뭔지 다 이해하겠죠
参会者 1 25:21 是的,你们都能理解这个吧?

Attendees 1 25:31 오케이 그래서 여러분들이 일단은 이거를 이제 직접 이런 식의 여기 일부 핵심이 되는 부분들을 이렇게 보여주고 설명을 했는데 이런 식의 어떤 프로그래밍을 해서 실제 돌려보면서 이해를 하면 될 것 같고 한 가지 참고로 얘기하자면 여러분들 이제 이런 거 하다 보면 어 여기 이제 이게 막 행렬이 나오고 벡터가 나오고 막 이렇게 나온단 말이에요. 이거 나중에 보면 이런 게 막 약간 헷갈릴 수가 있어요. 어디서 헷갈리냐 하면 이 디멘전을 잘 맞추고 이렇게 이해를 해야 되는데 예를 들면 여기 보면 이런 계산을 내가 한다. 그럼 이 x가 지금 디멘전이 어떻게 되지? 그럼 이거 m 예를 들면 m m 우리 데이터 또 뭐죠? 이게 5 5 2고 그다음에 w는 어떻게 정의됐냐면 2 바이 1이고 그러니까 요거 멀티피케이션 같아야 되는 거죠.
与会者 1 25:31 好的,那么大家可以直接看这部分核心内容,并进行这样的编程,实际运行并理解。顺便提一点,当你们这样做的时候,你们会发现出现了矩阵、向量等。这可能会让人有点困惑。具体在哪里困惑呢?主要是要正确匹配维度并理解。例如,当我进行计算时,这个 x 的维度是什么?比如说 m m,我们的数据是 5 5 2,然后 w 是如何定义的?是 2 by 1,所以在乘法运算时,维度必须匹配。

Attendees 1 26:41 그럼 이 계산하면 5 5 1의 결과가 나오겠구나 이런 거를 이제 확인하고 머릿속에 이해를 해야 되는 거고 만약에 중간에 뭐가 헷갈리고 하면서 이게 차원이 어떻게 되는 거지 뭐 계산이 왜 에러가 나지 그러면 각각의 벡터나 행렬을 한 번씩 찍어보면 돼요. 찍어보면서 그래 이게 차원 이렇게 되니까 이거 트랜스포즈 해야 되는데 착각했구나 이런 거를 좀 이제 확인하면서 이해를 할 필요가 있겠어요. 뒤에 가면 그런 게 더 나올 수 있어요. 신경망 모델의 차원이 커지고 모델이 복잡해지고 그러면 막 행렬 연산을 하는데 이게 어떻게 되는 거야? 헷갈리세요. 항상 차원을 확인하면서 보면 될 것 같아요. 이거는 이제 여러분들이 직접 각 단계의 계산들을 이제 수행하도록 함수를 작성해서 하는 거고 우리는 이제 라이브러리를 또 쓴다고 그랬죠. 라이브러리를 쓰면 남들이 다 그걸 구현해 놓은 걸 내가 갖다 쓰는 방법만 알면 되는 거예요.
与会者 1 26:41 这样计算后,结果将是 5 5 1,这是你需要在脑海中理解和确认的。如果中途感到困惑,不知道维度是怎么回事,或者计算为什么会出错,你可以逐一打印每个向量和矩阵。通过打印,你就能确认:啊,原来是这个维度,我需要转置。这需要你在理解过程中不断确认。后面会有更多这样的情况,当神经网络模型的维度变大,模型变得更复杂,进行矩阵运算时,你可能会感到困惑。始终关注维度就可以了。这是让你们直接编写函数来执行每个步骤的计算,我们之前还提到要使用库。使用库意味着你只需要知道如何使用别人已经实现的功能。

Attendees 1 27:36 그래서 실습 시간에 이런 데이터셋 가지고 해보는 거 아마 있을 것 같은데 아까 잠시 얘기했던 보스턴 하우징 데이터셋이 여기 보면 어떤 주택에 대한 다양한 값들이 주어지고 그때 미디언 밸류라고 그게 가격 이 어떻다 하는 정도였어요. 물론 이게 그냥 어느 걸 타겟 밸류로 해서 학습을 해도 상관은 없죠. 그런데 하여튼 이게 타겟 밸류다 그러면 여기 나와 있는 게 이제 예를 들어 crim 그럼 뭐겠어요? 크라임 레이쇼 이런 거겠죠 RM 그러면 룸의 개수 stat 그다음에 로어 스테이터스 비율 이건 미디엄 밸류 이런 것들이 쭉 주해서 이 데이터들이 이렇게 주어지는 게 보스턴 하우징 데이터셋이에요. 예를 들어서 여기 로 스테이터스 값과 프라이스 가의 관계를 살펴보자. 그럼 데이터를 스캐터 플롯으로 롯 해보면 이제 이런 식의 어떤 데이터들이 있구나 볼 수가 있다는 거죠. 리니어 리그레션을 해보고 싶다. 그래서 이게 x대와의 관계를 나는 선형으로 한번 잡아내보고 싶다.
所以在实践课上,我们可能会使用这样的数据集,之前提到的波士顿房价数据集就是这样的。看看这里,有关于某些房屋的各种值,当时的中位数值代表了价格。当然,可以选择任何一个作为目标值进行学习。举个例子,如果这是目标值,那么像犯罪率(crim)、房间数量(RM)、低社会地位人口比例(stat)等数据都会给出。这就是波士顿房价数据集。例如,我们想探索低社会地位人口比例与价格之间的关系,可以绘制散点图来直观地查看数据。我想尝试使用线性回归,即尝试用线性方式捕捉 x 轴与目标值之间的关系。

Attendees 1 28:55 그러면 이 데이터를 가지고 우리가 앞서 했던 것처럼 이제 그레디언 디센트를 쭉 수행하면 될 거예요. 여러분들이 작성한 프로그램으로 돌릴 수도 있고 그런데 여기서 이미 만들어진 제공된 라이브러리를 물론 써도 된다. 이거지 사이클 란에 리니어 모델이라는 모듈에 보면 리니어 리그레션이라는 이름의 클래스가 있어요. 그러면 이게 사용 방법은 이렇게 하는 거지 이걸 쓰겠다. 인스턴스를 만들어 이름을 아무거나 붙여도 돼요. 여기서 lr이라고 했고 요 가서 API 가서 보면 이미 소개했죠. 학습을 하는 메소드가 거의 모든 클래스에게 주어진 f. 그럼 나는 데이터를 주면서 리니어 리그레션의 핏을 시키면 얘가 알아서 파라미터를 이제 에러가 미니마이즈 되는 파라미터를 찾는 거지. 난 이거 한 줄만 딱 쓰면 돼.
然后,我们可以像之前那样执行梯度下降。你可以使用自己编写的程序,也可以使用已经提供的库。在 scikit-learn 中,线性模型模块有一个名为线性回归的类。使用方法是这样的:创建一个实例,我在这里命名为 lr。正如之前介绍的,大多数类都有一个拟合(fit)方法。你只需提供数据并对线性回归进行拟合,它就会自动找到使误差最小化的参数。只需这一行代码就可以了。

Attendees 1 29:58 네 물론 이제 알아야 되는 것들이겠죠. API를 가서 확인해가지고 여기 파라미터로 설정할 수 있는 게 뭔가 그다음에 이게 내부적으로 설정돼 있는 예를 들어서 w를 찍으려면 어떻게 해야 돼 그러면 이름이 이렇게 된다고 써 있다. 이거지 얘네들은 w는 포이프 언더스코어라는 이름으로 제공한다고 돼 있고 바이어스는 인터셉트 언더스코어로 제공한다고 돼 있어요. 매뉴얼에 가서 보면 이걸 이제 내부 애트리비트를 내가 찍어보면 되는 거죠. 핏에서 학습이 끝나고 나면 찍어보면 9 마이너스 3 14 이런 걸 내가 찾아냈다는 걸 알 수가 있고 네 그다음에 모델을 가지고 새로운 값을 예측하려고 그러면 프리딕트를 한다고 그랬죠. 그래서 이미 주어진 데이터의 x에 대해서 한번 프린트 값이 어떻게 되나 계산해 가지고 네 그걸 이제 플롯을 해보면 오른쪽 그림과 같은 라인이 얻어졌구나 하는 걸 확인할 수가 있을 거예요.
参会者 1 29:58 是的,现在我们需要了解这些。去 API 确认,看看可以在这里设置哪些参数,然后看看内部是如何设置的。例如,如果要打印 w,应该如何操作,它会显示名称是什么。它们说 w 是以"pipe_underscore"的名称提供的,偏置项是以"intercept_underscore"提供的。当你查看手册并打印内部属性时,就可以看到这些。在拟合完成后,你可以看到你发现的值,比如 9 减 3 14 等。然后,如果要用模型预测新值,就像我们之前说的使用预测。对于已给定数据的 x,计算并打印值,然后绘制图形,你就可以确认右侧图像中的线条了。

Attendees 1 31:00 실제 파라미터 값은 이런 거고 네 에러가 어느 정도 되는 거야 그러면 미인 스퀘어 에러라는 함수가 주어진 게 있어서 이건 아마 넌 파이에 주어지는 건가 아무튼 이 라이브러리 함수를 써가지고 두 개의 값을 주면 y 값과 y h을 주면 얘가 평균 스퀘어 에러를 계산해서 얼마다 하는 걸 알려드리. 이건 지금 에러가 많이 있게 생겼네. 그렇죠. 위아래로 지금 데이터들이 퍼져 있어서 네. 그래서 이제 앞으로 우리가 라이브러리 함수를 쓴다 그러면 어떤 거는 여러분들이 직접 세부적인 과정 계산 과정을 코딩하는 게 있고 어떤 걸 라이브러리 쓰는 것들이 있는데 라이브러리를 쓰는 경우에는 예를 들어서 이거를 어떻게 쓴다 하는 거는 이거 두 줄 그냥 쓰면 되는 거니까 간단한데 근데 이제 내용을 알고 써야 되는 거니까 그렇죠.
参会者 1 31:00 实际参数值是这样的,是的,误差有多大?那么有一个均方误差函数,这可能是在 NumPy 中提供的。无论如何,使用这个库函数,当你提供两个值(y 值和 y_hat)时,它会计算并告诉你均方误差。这看起来误差相当大。对吧?数据点现在在上下方向上都很分散。所以,今后当我们使用库函数时,有些情况下你需要亲自编码详细的计算过程,有些情况下可以直接使用库。使用库的情况下,比如这个,只需要写两行代码就可以了,但重要的是要理解其中的内容。

Attendees 1 31:55 그래서 우리가 리니어 리그레션 브레디언티선트 계산 어떻게 하는 거다 이렇게 이해를 다 하고 그다음에 이걸 쓰면 되는 거고 실제 프레티컬하게는 이걸 쓸 때 이 라이브러리 API에 파라미터나 에티비티에 어떻게 정의돼 있고 어떤 메소드가 제공되고 이런 걸 이제 매뉴얼을 필요하면 확인해 가면서 쓸 수 있게 하면 되는 거죠.
所以我们了解了如何计算线性回归的梯度下降,然后就可以使用它了。实际上,在实践中使用时,需要查看这个库的 API 参数或活动是如何定义的,提供了哪些方法,如果需要的话,可以查阅手册并这样使用。

Attendees 1 32:18 네. 그다음에 한 두 가지 좀 보려고 그러는 거는 첫째 아까 리니얼 리그렉션 했고 그런데 멀티플 x가 있는 경우를 봤어요. 근데 어쨌든 그것도 크게 봤을 때 리니어 리그레션이죠. 그런데 어떤 경우에는 여기 오른쪽에 있는 그래프처럼 네 x와 y의 관계가 이렇게 선형 같지 않아 보이는 게 있을 수 있죠. 이것도 물론 여기에 가장 적합한 어떤 선 형식을 얻을 수는 있겠지만 에러가 미니마이즈 되는 그것보다는 요건 이런 예컨대 어떤 2차식 같아 보이는 이런 곡선이 x와의 관계를 잘 표현한다 이렇게 볼 수가 있겠습니다. 그렇죠 이런 걸 찾는 건 우리가 리니어가 아닌 낫 리니어식을 찾는 건데 그중에서도 모든 다양한 형태의 나니니어 중에 폴리노미알 형태의 모델을 찾는 걸 우리가 폴리노미얼 리그레션이라고 얘기 그러면 모델이 어떻게 생긴 거냐 아까 y는 세타 x인데 w 제 x 제로 플러스 w1 x는 플러스 b였다. 그런 리니어 펑션이었죠.
是的。接下来我们想看的是,首先是之前我们讨论的线性回归,看了多个 x 的情况。但不管怎样,这仍然是线性回归。然而,在某些情况下,就像右边的图表所示,x 和 y 的关系看起来并不是线性的。当然,我们仍然可以找到最适合的线性方程,但是与最小化误差相比,这种情况可能更适合用类似二次曲线的形式来表达 x 之间的关系。对吧?找到这种非线性方程,特别是在各种非线性形式中找到多项式形式的模型,我们称之为多项式回归。那么模型是什么样子呢?之前 y 是θx,即 w 零乘 x 加上 w1 乘 x 再加 b,那是一个线性函数。

Attendees 1 33:27 이제는 네 이런 제곱 삼승 막 이런 게 들어간 식으로 표현하는 게 이게 폴리노미얼 리그레션이에요. 요 세타 파라미터 그래서 w1 w w1 기타 더 있겠죠. 만약에 폴리노미이 3차면 하나 더 있고 4차면 2개 더 있고 이렇게 있을 거예요. 그럼 요거는 어떻게 찾으면 되느냐
现在,我们用平方、立方等形式来表达,这就是多项式回归。这里的θ参数,所以有 w1、w 等。如果是 3 次多项式,会多一个,如果是 4 次多项式,会多两个,以此类推。那么,我们要如何找到这些参数呢?

Attendees 1 34:11 네 이것도 이제 그레디언트 센터를 우리가 할 건데 그런데 이건 좀 그럼 다르게 예를 들어서 코스트 펑션을 다르게 설정한다든지 아니면 미분을 하면 형태가 달라지고 이런 거를 골치 아프게 생각할 필요 없이 사실은 이게 같은 거다 이렇게 볼 수 있어요. 이거 그냥 리뉴얼 리그레션으로 생각할 수 있다. 왜 그러냐면 우리가 이렇게 생각을 바꾸면 돼요. 모델이 그러니까 데이터는 1차원인데 하나의 값만 있는데 모델은 이제 식의 제곱도 있고 3승도 있네 이렇게 생각하지 말고 데이터 자체가 그런 것들로 구성돼 있다고 생각할 수가 있어요. 데이터는 원래 x 값 하나의 y 값 하나가 주어지는 거지만 내가 그걸 싹 확장하는 거지 x가 주어졌으니까 x 제곱도 계산할 수 있잖아요. 그렇죠. 3승도 계산할 수 있고 우리가 싹 계산해 놓은 다음에 아까 멀티플 리그레션이 뭐였어요? x가 여러 개의 값으로 주어진다. 이게 x 제로 x 1 x2라고 생각하면 돼요.
是的,我们现在要使用梯度下降法。但是,如果代价函数设置不同,或者求导后形式发生变化,我们不需要过多考虑这些复杂的情况。其实,我们可以把它看作是同一种方法。可以将其视为普通的线性回归。为什么呢?我们可以这样思考:尽管数据是一维的,只有一个值,但模型可以包含平方、立方等项。我们不要把它看作是模型有这些不同的项,而是可以认为数据本身就是由这些项组成的。数据原本只有一个 x 值和一个 y 值,但我们可以对其进行扩展。既然给定了 x,我们就可以计算 x 的平方,也可以计算 x 的立方。就像多元回归一样,x 是由多个值组成的,可以理解为 x0、x1、x2。

Attendees 1 35:17 그러면 앞에 그냥 똑같이 모델이 원래는 w x 제로 wx1 w2 x2 이렇게 가는 거지만 그게 각각 얘네들 로 데이터를 만든 다음에 멀티플 리니얼 리플렉션 하면 되는
那么,前面模型原本是 w x,零 wx1 w2 x2 这样进行,但如果用这些数据创建,然后进行多元线性回归就可以了

Attendees 1 35:41 네 우리가 이제 앞서 모델의 콤플렉스 티와 그다음에 뭐지 오버 피팅 그런 얘기를 했죠. 오버 피팅이라는 건 모델이 너무 복잡해져서 트레이닝 데이터의 정확도가 높아지는 것 같이 보이지만 이제 새로운 테스트 데이터에는 사실 성능이 더 나빠지는 거 말하는데 이런 샘플 데이터를 가지고 아마 여러분들이 해보라고 하는 걸 할 거예요. 이 데이터는 코사인 값을 계산하는 거에 약간 노이즈를 줘가지고 이렇게 좀 선형 관계가 아닌 어떤 이상한 x와의 관계 데이터를 지금 이제 임의로 만들어 놓은 거예요. 이거에 맞춘 리그레션을 하려고 그러는데 선영 식은 좀 적절치 않을 것 같고 그래서 내가 오케이 2차 식을 찾겠다. 그런데 여기 보면 2차식으로도 좀 적절하지 않은 거 난 3차식을 해야 되겠어 이렇게 가다가 나는 끝까지 가보고야 말 거야. 그래갖고 10차 식으로 했다면 이제 1차식은 이렇게 되겠죠. 예를 들어서 해보면 2차 식은 이렇게 되는 거고 10차씩 가면 이런 게 막 나올 거예요.
对,我们之前讨论了模型的复杂性和过拟合的问题。过拟合是指模型变得太复杂,看起来训练数据的准确性很高,但实际上在新的测试数据上性能反而下降。我们现在将使用这些样本数据进行尝试。这些数据是通过在余弦值计算中添加一些噪声,创建了一个与 x 之间不是线性关系的奇怪数据。我们想要拟合这个回归模型,但线性方程似乎不太适合。所以我想尝试二次方程,但发现二次方程也不太合适,于是我决定尝试三次方程,最终我要一直尝试到底。如果使用到 10 次方程,那么一次方程看起来是这样的。举个例子,二次方程是这样的,而 10 次方程可能会变成这样

Attendees 1 37:03 가장 잘 맞는 10차 다음식을 찾게 되면 이거는 이제 별로 좋은 게 아니라는 걸 예를 들어서 이런 거에서 금방 우리가 알 수가 있죠. 눈으로도 쉽게 보이는 거예요. 이런 x에 대해서 값을 이렇게 예측할 텐데 이 적절해 보이지는 않는 거지 그러면 이제 이때 우리가 이게 이제 갈수록 컴플렉시티가 높아진다는 거잖아요. 모델의 콤플렉스가 높아지는 건데 이 주어진 데이터에는 조금이라도 더 맞을지 몰라요. 이게 그렇지만 이제 새로운 데이터에 잘 맞지 않을 것 같이 보는 거고 그러면 나는 여기서 적당한 레벨을 찾아야 돼요. 이건 좀 너무 언더 에스티메이터죠. 언더 피팅 이건 너무 오버 피팅 적당한 걸 찾아야 되는데 네 그걸 하는 방법이 모델 자체를 처음부터 적당한 차수로 설정하는 게 좋겠다 이런 걸 내가 결정할 수도 있지만 높은 차수로 모델은 설정해 놓고 모델의 컴플렉시티를 이런 방법으로 우리가 조정할 수도 있어요. 가장 흔하게 쓰이는 레귤러 라이제이션이라는 거 있죠.
与会者 1 37:03 当我们找到最适合的 10 次多项式时,我们可以立即意识到这可能并不是一件好事。这是很容易通过眼睛观察到的。当我们对这个 x 的值进行预测时,看起来并不恰当。这意味着模型的复杂性正在增加。它可能在给定的数据上更加吻合,但看起来可能不太适合新的数据。因此,我需要找到一个适当的水平。这有点太过于拟合不足,那个又太过拟合,需要找到一个平衡点。我可以通过一开始就设置一个合适的次数来决定,或者我们可以通过调整模型的复杂性来处理。最常用的方法是正则化。

Attendees 1 38:11 이건 뭐냐 하면 파라미터의 사이즈를 줄이는 개념이에요. 쉽게 말하면 파라미터의 사이즈가 줄면 모델이 콤플렉스 하지 않게 돼요. 무슨 얘기냐 여기 10차 다항식으로 모델이 복잡하게 설정이 돼 있다 이거예요. 이 모델의 파라미터라는 게 얘들인데 얘들이 아주 작은 값이 되면 예를 들어서 이게 거의 0에 가까운 값이 되면 그래서 만약에 여기까지 그렇다 그러면 얘는 만약에 이 뒤는 그렇지 않다 그러면 얘네들은 실제 항이 남아 있긴 하지만 거의 제로로 떨어지게 되면 별로 영향을 못 미치기 때문에 예를 들어서 2차 항 정도까지만 어느 정도 크기를 갖는 파라미터가 남아 있다면 이것처럼 2차식 비슷한 그런 곡선의 형태를 띠게 되고 컴플렉시티를 낮추는 역할을 하는 거 그래서 그럼 어떻게 하면은 모델의 파라미터를 좀 줄일 수가 있나 그러니까 우리가 목표로 하는 미니마이즈 하려고 하는 그 대상을 이렇게 설정하는 거죠.
与会者 1 38:11 这是什么概念呢?就是减小参数的大小。简单来说,如果参数的大小减小,模型就不会那么复杂。举个例子,这里有一个 10 次多项式,模型设置得很复杂。这些参数如果变得非常小,比如接近 0,那么即使这些项还存在,但由于影响微乎其微,实际上只有前面几项(比如 2 次项)保持了一定的大小,就会形成类似二次曲线的形状,从而降低模型的复杂性。那么我们如何减小模型的参数呢?我们需要调整我们要最小化的目标。

Attendees 1 39:16 원래는 이걸 미니마이즈 하려고 그 이게 우리 코스트 함수예요. 이게 어쨌든 에러가 최소화되게끔 하고 싶다. 그런데 거기다가 이런 항을 붙이는 거예요. 이거는 wj가 이게 각각의 파라미터들이란 말이죠. 모델에 이제 이 설정된 파라미터인데 그거의 제곱의 합 나머지는 상수들이고 이렇게 표현된 항을 붙이니까 그리고서 이거를 우리가 목표로 하는 거예요. 얘를 미니마이즈 하는 걸 목표로 하는 거예요. 그러면은 이 전체 식이 최소화되려면 w 값도 작아야 되겠죠. 여기 지금 w 제곱이라는 항이 쭉 더해지고 있으니까 w 값이 작아야만 전체 값도 좀 작을 거 아니에요 그렇죠 물론 그런 변화에 따라서 제가 커질 수도 있는 거지만 이게 하여튼 두 개가 합쳐져서 통으로 뭔가 미니마이즈 하려고 그러면 w는 뭔가 작아지는 효과를 주게 될 거예요. 이거를 우리가 그레디언 디센트를 한다고 생각하고 미분을 해보면 원래는 이거죠.
参会者 1 39:16 原本是想要最小化这个。这是我们的代价函数。无论如何,我们希望误差能被最小化。然后在这上面添加这样一项。这是每个参数的 wj。现在是模型中设置的这些参数,取其平方和,剩下的是常数,以这种方式表达的项。如果这样添加,然后我们的目标是什么呢?就是要最小化它。那么,为了让整个式子最小化,w 值也需要变小。因为现在这里有 w 平方这一项被不断相加,所以 w 值越小,整体值也会越小。当然,根据这种变化,它可能会变大,但是当这两个部分合并在一起要最小化时,w 会产生某种变小的效果。如果我们考虑使用梯度下降并进行微分,原本是这样的。

Attendees 1 40:26 w를 새로운 값으로 변경시키는데 코스트의 그레디언트의 반대 방향으로 이제 움직이는 건데 여기 향이 더 하나 추가됐단 말이죠. 이거 미분한 거는 이거고 이것도 이거 전체를 내가 미분할 게 이제 전체를 가지고 미니마이즈 할 거니까 이거 전체를 미분해서 그거의 이제 변화율에 따라서 반대로 가야 되겠죠. 그러니까 두 번째 항목 포함해서 미분을 하면 네 얘 미분하면 이렇게 되죠.
参会者 1 40:26 在更改 w 为新值时,是朝着代价梯度的反方向移动,这里多了一个方向。这是对它求导的结果,我现在要对整个式子求导,因为我要最小化整个式子,所以要根据其变化率反向移动。所以,包括第二项在内求导的话,结果就是这样。

Attendees 1 40:58 이 전체를 예를 들면 w j라는 거에서 미분하면 이 앞으로 나오고 w 제 w1 w2 이렇게 쭉 더해진 그런 상이 될 텐데 거기에 대해서 이거에 대해서 w로 또 안에 체인으로 미분하게 되면 치는 건 미용할 필요가 없고 그냥 이제 예를 들면 w 제의 제곱 w1의 제곱 w2의 제곱 이렇게 쭉 돼 있는 식인데 이게 이걸 위해서 w1에 대해서 미분하면 이게 뭐야 ew1이 됐어요. 그죠? 그러니까 미분한 것은 이렇게 돼요. 그러니까 이렇게 그레디언 디센트가 진행될 거라는 거지 업데이트가 그럼 여기 보면 아까 거랑 이항이 없는 거랑 비교해서는 요만큼의 변화가 더 있는 거죠. 이건 뭐냐 하면 w가 에 비례하는 만큼 그 크기에 비례하는 만큼 wp의 크기를 줄이는 큰 파라미터는 더 많이 줄이고 작은 파라면 조금 줄이고 그래서 전체적으로 파라미터의 크기가 줄어들고 네 여기 보면 요 람다라는 여기 붙이는 상수가 있어요.
参会者 1 40:58 举个例子,从 wj 求导的话,这个就会出现在前面,w 第一个 w1 w2 这样依次相加,会形成这样的情况。关于这一点,如果对 w 再求导的话,就不需要考虑修饰,比如说 w 的平方,w1 的平方,w2 的平方,这样依次排列的公式。对此对 w1 求导的话,就变成了 ew1,对吧?所以求导就是这样的。那么梯度下降就会这样进行,更新也会有这么多变化。这是什么意思呢?就是 w 的大小成正比,按照其大小减小 wp 的大小,大的参数减少得多,小的参数减少得少,从而整体上减小参数的大小。这里有一个λ常数。

Attendees 1 42:19 m은 데이터 사이즈로서 전체 평균 내기 위해 들어가 있는 거고 요 람다를 우리가 레귤러 라이제이션 파라미터라고 그래서 이 값이 얼마냐에 따라서 이게 레귤러라이션이 강하게 들어가냐 아니냐가 결정되거든요. 극단적으로 이걸 0으로 설정하면 이건 이제 아무것도 안 하는 거니까 원래 포스트 펑션을 그냥 쓰는 거죠. 그러면 원래의 콤플렉스티가 그대로 남아 있을 거예요. 가장 적절한 1차 식을 찾겠죠. w가 커지게 되면 이 부분이 이 부분이 작아지는 게 가장 큰 영향을 주게 될 테니까 전체가 줄어드는 데 있어서 j랑 별로 상관없이 어쨌든 w를 최대한 줄이려고 하게 될 거고 그렇게 되면 앞에 것들이 막 이렇게 사라지는 그런 결과처럼 돼서 너무 커지게 되면 완전히 이제 너무 단순한 식과 같이 모델이 되는 거고 아예 하지 않으면 가장 복잡한 시기 되고 그 중간에 어디쯤으로 파라미터를 설정해서 적절한 컴플렉시티를 얻을 수 있다.
参会者 1 42:19 m 是数据大小,用于计算整体平均值。这个λ我们称为正则化参数。这个值的大小决定了正则化的强度。极端情况下,如果将其设为 0,那就相当于什么都不做,直接使用原始函数。那么原始的复杂度就会保持不变,找到最合适的一次函数。当 w 变大时,这部分会变小,对整体缩小有最大影响,不管与 j 有什么关系,总之会尽量减小 w。这样的话,前面的部分就会消失,如果变得太大,模型就会变得非常简单,如果完全不做,就会变得最为复杂。在这之间的某个地方设置参数,就可以获得适当的复杂度。

Attendees 1 43:25 네 그래서 여러분들 이것도 한번 해보도록 아마 돼 있을 텐데 여기 보면 주어진 요 데이터 요 데이터에 대해서 폴리노미얼 리그레션을 수행하는데 폴리노미얼 리그레션이 따로 있는 게 아니고 데이터를 이렇게 확장해서 쓴다 그랬죠. 그걸 하는 라이브러리가 또 제공되는 게 있어요. 그래서 여기 보면 사이킬런의 프리 프로세싱 모듈에 폴리노미얼 피처스라고 돼 있는 걸 쓰면은 폴리노미얼 피철스에 피 트랜스폼이라는 메소드를 쓰면 이걸 x를 주면서 이걸 트랜스폼 해라 그러면 여기에 x x 제곱 이렇게 내가 원하는 디그리만큼 데이터를 트랜스폼 해 주는 거예요. 이러고 나서 그냥 리니어 리그레션을 수행하면 된다. 이거 우리가 앞서 봤던 사이클론의 리니어 리그레션을 적용할 수 있고 만약에 내가 여기서 본 것과 같은 레귤러 라이제이션을 좀 걸어서 컴플렉시티를 조정을 해보고 싶다. 그러면 여기 리즈라는 리그레션을 수행하는 클래스가 제공되는 있어요.
参会者 1 43:25 是的,所以各位可能已经尝试过这个。如果你看这里,对于给定的这些数据,执行多项式回归。多项式回归并不是一个单独的东西,而是通过扩展数据来实现。这里有一个提供这种功能的库。在 scikit-learn 的预处理模块中,有一个叫做多项式特征的功能。如果使用 PolynomialFeatures 的 transform 方法,将 x 作为输入并进行转换,它会根据你想要的次数,生成 x、x 的平方等数据。之后只需执行线性回归即可。我们可以应用之前看到的 scikit-learn 的线性回归,如果想通过正则化来调整复杂度,还有一个叫做 Lasso 的回归类可以使用。

Attendees 1 44:55 리니어 모델에 이거는 바로 요거 민스퀘어러 를 기본으로 하고 거기다가 적절한 설정한 파라미터에 따라서 이런 항을 추가해서 미니마이즈 하는 그런 글래스 그리고 여기 API 가서 찾아보면 이 파라미터는 이름이 알파라고 돼 있는 것 같아요. 알파 네 그래서 이제 이렇게 해보는 거죠. 데이터는 이런 식으로 만들어낸 건데 찍어보면 이렇고 나는 앞에 이 뭐죠? 폴리노미얼 피처스라는 걸 써서 데이터를 트랜스폼 해가지고 10차원의 데이터로 이걸 바꿨어요. 그리고 나서 트랜스폼 된 데이터를 이름을 이렇게 살짝 바꿔서 아마 줬을 거예요. 리뉴얼 리그레션을 이거 가지고 수행하면 그러면은 이제 11개의 파라미터를 말하자면 얻겠죠. 얻고 그걸 플롯을 해보면 이런 형태로 모델이 이렇게 생겼구나 컴플렉스트가 굉장히 높은 거죠. 10차의 어떤 함수 모델링이 된 거예요. 그런데 똑같은 거를 나는 리니어 리그레션이 아니라 리그레션 하는데 레귤러 라이제이션이 들어간 리지 라는 클래스를 써서 하겠다.
参会者 1 44:55 这个线性模型基本上是基于最小二乘法,通过适当设置的参数添加相应的项并进行最小化。在 API 中,这个参数似乎被称为α。所以现在这样做。这些数据是这样生成的,绘制出来就是这样。我使用多项式特征将数据转换为 10 维。然后使用转换后的数据,可能稍微改变了名称。使用线性回归执行,那么将得到 11 个参数。如果将其绘制出来,模型看起来就是这样,复杂度非常高,建模为 10 次函数。但是,我将使用带有正则化的 Lasso 类,而不是简单的线性回归来完成相同的任务。

Attendees 1 46:29 마찬가지로 이게 10차로 확장된 데이터를 가지고 리그레션을 수행해서 결과를 우리가 트랜스폼 플렛을 해보면 이렇게 모델이 내려지는 걸 볼 수가 있다. 네 이런 걸 예를 들어서 여기 알파 값을 좀 바꾸면서 어떤 변화가 있는지 해볼 수가 있을 것 같고 여기 참고로 실수하기 쉬운 것 중에 하나는 내가 트레이닝 데이터를 이렇게 10차로 확장해서 이제 썼잖아요. 그러면 내가 새로운 데이터에서 예측할 때도 그냥 x를 넣어서 예측하면 안 되고 x x 제곱 x 함수 이런 식으로 확장해서 가야 되겠죠. 네 그거는 살짝 주의해야 되고 네 그렇게 해서 폴리노미 리그레션 하고 그다음에 레귤러 라이제이션의 효과가 어떤지 이런 거를 해보는 데까지 여러분들이 하면 될 것 같습니다. 예 오케이 혹시 뭐 질문 있는 가
同样地,如果我们使用扩展到 10 次方的数据进行回归并转换平面,我们可以看到模型是如何下降的。是的,例如,我们可以尝试改变这里的阿尔法值,看看会发生什么变化。顺便提醒,容易犯的错误之一是,我已经用 10 次方扩展了训练数据。那么在用新数据进行预测时,不能简单地直接输入 x 进行预测,而是要像 x、x 的平方、x 的函数等这样扩展。是的,这一点需要稍微注意。然后,你们可以尝试进行多项式回归,并观察正则化的效果等。是的,好的。有什么问题吗?

Attendees 1 47:43 예 그럼 오늘 여기까지 하겠습니다.
好的,今天就到这里。

Attendees 2 48:33 이렇게 되면 플레이스 ws 안 빠지는 게 사실대로 얘기하고 처음
如果出席人数是 2 48:33,这样就不会漏掉 ws,说实话是第一次

Attendees 1 48:45 직접 여기서 예를 들면 어떤 벡터가 있고 여기서 쉐입을 다 중간중간에 누구인지 확인하고 그러면 바로 다음 선거 같은 경우에 엑스 트레이닝
出席人数 1 48:45 举个例子,如果有某个向量,在这里检查形状,确定是谁,那么在下一次选举中就可以进行 X 训练

Attendees 1 49:11 그런데 이거는 이제 매트릭스이고
参会者 1 49:11 但是这是一个矩阵

Attendees 2 49:14 이 형태로 돼 있기 때문에 아마 쉐입을 해주면 5 2고 이건 5 이런 식으로 아마 표현이 될 거예요.
参会者 2 49:14 因为它是这种形式,所以可能会给它一个形状,5 2,然后这是 5,大概就是这样表示的。

Attendees 1 49:21 또 어떤 분류는
参会者 1 49:21 还有另一种分类

Attendees 3 49:47 몇 시부터 수업이냐
参会者 3 49:47 几点开始课程

Attendees 1 49:50 여기서는 바로 가겠네. 그치 뒤에 가면 우리가 거의 다 다 좀 커서
这里我们马上就要走了。对吧,后面我们几乎都已经长大了

Attendees 1 50:07 그러니까 x는 데이터는 x x x 3승을 집어넣어서 내가 했는데 모델도 그렇고 근데 내가 원래는 이제 스컷 팔아야 돼 스카 하나를 주고서 그걸 모델에 집어넣어서 예측하려고 그러면 안 맞으니 거 모델은 이제 w 제로의 값도 있어요.
所以我把 x 的数据放入了 x x x 的 3 次方,并且模型也是如此。但是我原本想卖掉斯科特,给出一个,然后将它放入模型进行预测,但不匹配。这个模型现在也有 w 零的值。

Attendees 4 50:25 여기 밑에 체크
参与者 4 50:25 在这里检查一下

Attendees 3 50:27 아 이걸로 지랄
参与者 3 50:27 啊,就为这个大惊小怪

Attendees 1 50:31 그렇지 아까 진짜 그거까지 화이트하고 체크해 트랜스폼 해가지고 그거는 이제 그냥 하나만 있으면 그
出席者 1 50:31 刚才那个确实是白色和复选框转换,现在只要有一个就可以了

Attendees 2 50:43 일단 교수님께서 저희 지도 교수님도 있는데 중학교 과정을 수정하려고
出席者 2 50:43 首先,教授,我们的指导教授也在,想要修改中学课程

Attendees 1 51:04 요즘 좀 심화 가지고 뭐 그런 거를 안 한다.
最近有点严重,没有做那种事。

Attendees 2 51:08 진짜 6.1 3.1까지 끌어올리는 거지.
真的是把 6.1 提升到 3.1。

clovanote.naver.com