From the uDemy course on LLM engineering.
https://www.udemy.com/course/llm-engineering-master-ai-and-large-language-models
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
328 lines
8.8 KiB
328 lines
8.8 KiB
WEBVTT |
|
|
|
00:00.890 --> 00:07.700 |
|
잠시 시간을 내서 이 멋진 도표를 보세요 모든 걸 배치한 거죠 그런 다음 넘어가죠 |
|
|
|
00:07.700 --> 00:10.970 |
|
이제 제가 말씀드리고 싶었던 세부적인 부분으로 넘어가죠 |
|
|
|
00:10.970 --> 00:18.470 |
|
제가 비트를 좀 느슨하게 표현했는데요 모델이 다음 토큰을 예측한다고 했었죠 그렇게 생각할 |
|
|
|
00:18.470 --> 00:19.970 |
|
수도 있겠네요 |
|
|
|
00:20.000 --> 00:21.200 |
|
간단하게 생각해 보죠 |
|
|
|
00:21.200 --> 00:25.730 |
|
종종 그런 표현을 쓰지만 실제로는 그렇지 않아요 |
|
|
|
00:25.730 --> 00:30.800 |
|
변압기 구조가 있는 것도 아니고 맨 아래 계층에서 나오는 건 단일 토큰이 |
|
|
|
00:30.800 --> 00:33.560 |
|
아니죠 예측 가능한 다음 토큰이요 |
|
|
|
00:33.800 --> 00:35.390 |
|
그렇게 되는 게 아니에요 |
|
|
|
00:35.390 --> 00:40.310 |
|
마지막 층에서 나오는 건 확률이에요 |
|
|
|
00:40.310 --> 00:44.390 |
|
모든 토큰을 갖고 있고 그 모든 토큰에 대해 알고 있죠 |
|
|
|
00:44.390 --> 00:48.080 |
|
그게 다음 토큰이 될 확률은 얼마나 될까요? |
|
|
|
00:48.080 --> 00:52.130 |
|
일련의 확률을 내놓죠 |
|
|
|
00:52.160 --> 00:54.920 |
|
신경망 아래에서 나오는 거예요 |
|
|
|
00:55.100 --> 01:00.410 |
|
프린트할 때 마지막으로 봤던 레이어가 있었죠 |
|
|
|
01:00.410 --> 01:02.640 |
|
LM 헤드라는 모델이에요 |
|
|
|
01:02.700 --> 01:06.420 |
|
그게 가장 마지막 단계예요 |
|
|
|
01:06.420 --> 01:11.310 |
|
숫자의 벡터인 로그잇을 가지고 나타납니다 확률을 나타내는 |
|
|
|
01:11.310 --> 01:12.810 |
|
것들이죠 |
|
|
|
01:12.840 --> 01:14.970 |
|
그걸 함수에 넣어야 해요 Put it up |
|
|
|
01:15.090 --> 01:19.260 |
|
너무 자세하게 설명하는 것 같지만 이미 알고 계실지도 몰라요 |
|
|
|
01:19.260 --> 01:25.680 |
|
소프트맥스라는 함수가 있는데 이 숫자들을 확률로 변환할 수 있습니다 각각의 |
|
|
|
01:25.680 --> 01:31.650 |
|
토큰은 0에서 1 사이일 것이고 그 다합이 1이기 때문이죠 |
|
|
|
01:31.680 --> 01:39.540 |
|
따라서 모델의 결과를 가능한 다음 토큰의 확률로 해석할 수 있는 방법을 제공하죠 |
|
|
|
01:39.540 --> 01:43.710 |
|
이게 포워드 패스에서 나오는 거예요 |
|
|
|
01:44.130 --> 01:50.370 |
|
추론 모드에서 이걸 실행하면 get-ference 모드에서 얻는 건 |
|
|
|
01:50.370 --> 01:52.080 |
|
이 모든 확률이에요 |
|
|
|
01:52.080 --> 01:52.980 |
|
이걸로 뭘 할 수 있을까요? |
|
|
|
01:53.010 --> 01:55.530 |
|
다음 토큰이 뭘 예언하는지 어떻게 알죠? |
|
|
|
01:55.530 --> 01:58.080 |
|
대부분은 아주 간단한 접근법이에요 |
|
|
|
01:58.080 --> 02:00.600 |
|
가장 가능성이 높은 토큰을 선택하면 돼요 |
|
|
|
02:00.600 --> 02:02.820 |
|
가능성이 높은 토큰을 선택하세요 |
|
|
|
02:02.850 --> 02:04.450 |
|
개연성이 아주 다양해요 |
|
|
|
02:04.480 --> 02:06.130 |
|
누가 최대인지 알아봐요 |
|
|
|
02:06.130 --> 02:07.750 |
|
다음 글자는 이거로 해요 |
|
|
|
02:07.780 --> 02:10.840 |
|
좀 더 세련된 비트도 있어요 |
|
|
|
02:10.840 --> 02:16.720 |
|
이런 확률을 체중으로 삼아 무작위로 샘플을 채취할 수 있어요 |
|
|
|
02:16.780 --> 02:18.550 |
|
비트가 좀 더 다양해지죠 |
|
|
|
02:18.700 --> 02:24.520 |
|
몇 개의 글자를 연속해서 샘플링할 수 있는 다른 기술도 있어요 그리고 그 경로를 |
|
|
|
02:24.520 --> 02:25.900 |
|
선택할 수 있죠 |
|
|
|
02:25.900 --> 02:32.290 |
|
추론할 때 다양한 전략을 쓸 수 있어요 이런 확률을 바탕으로 최선의 결과를 |
|
|
|
02:32.290 --> 02:33.490 |
|
낼 수 있죠 |
|
|
|
02:33.490 --> 02:39.220 |
|
잠시 후 우리 프로젝트를 보면 약간 비표준 전략을 사용할 |
|
|
|
02:39.220 --> 02:45.940 |
|
겁니다 각각의 토큰은 비용, 숫자를 나타내니까요 |
|
|
|
02:45.940 --> 02:50.440 |
|
비트를 좀 더 영리하게 바꿀 수도 있지만 그럴 필요는 없어요 |
|
|
|
02:50.440 --> 02:54.130 |
|
아니면 가장 가능성이 높은 걸 선택해도 되고요 |
|
|
|
02:54.340 --> 02:57.550 |
|
모델 출력이 잘 설명했고요 |
|
|
|
02:57.580 --> 02:59.470 |
|
이제 확실히 아셨길 바라요 |
|
|
|
02:59.680 --> 03:02.050 |
|
그리고 상실 함수요 |
|
|
|
03:02.050 --> 03:04.330 |
|
지난 영상에서는 살짝 얼버무렸어요 |
|
|
|
03:04.360 --> 03:05.840 |
|
손해 보는 것도 모르시네요 |
|
|
|
03:05.840 --> 03:07.550 |
|
얼마나 심각했어요? |
|
|
|
03:07.550 --> 03:09.950 |
|
실제론 어떤 의미일까요? |
|
|
|
03:09.980 --> 03:11.990 |
|
놀랍도록 간단해요 |
|
|
|
03:11.990 --> 03:15.890 |
|
가능한 다음 토큰의 모든 가능성을 갖고 있죠 |
|
|
|
03:16.010 --> 03:21.200 |
|
그래서 다음 토큰이 무엇이었는지 알고 있다고 하는 거죠 |
|
|
|
03:21.290 --> 03:23.690 |
|
99개라고 가정해 보죠 |
|
|
|
03:23.690 --> 03:30.740 |
|
이 모든 확률을 살펴보고 모델에서 99의 확률을 계산해 올바른 다음 토큰이 |
|
|
|
03:30.740 --> 03:33.350 |
|
무엇인지 알아내는 거죠 |
|
|
|
03:33.350 --> 03:34.790 |
|
그게 가장 중요하죠 |
|
|
|
03:34.790 --> 03:38.780 |
|
중요한 건 정확한 결과를 낼 확률이 얼마냐는 거죠 |
|
|
|
03:39.080 --> 03:45.320 |
|
만약 그게 100%의 확률이라면 완벽한 거죠 |
|
|
|
03:45.320 --> 03:48.050 |
|
좋은 결과를 낼 거라고 100% 확신했어요 |
|
|
|
03:48.050 --> 03:51.320 |
|
다른 건 다 0이어야 해요 확률은 1이 되니까요 |
|
|
|
03:51.320 --> 03:53.900 |
|
그러니 정말 완벽하죠 |
|
|
|
03:53.900 --> 03:58.190 |
|
만약 100% less라면 잘 안 된 거예요 |
|
|
|
03:58.400 --> 04:01.850 |
|
확률이 낮을수록 더 안 좋은 결과가 나왔어요 |
|
|
|
04:02.000 --> 04:07.590 |
|
그 확률을 따져보면 잘 되는 것 같은 공식은 그 숫자의 |
|
|
|
04:07.920 --> 04:11.910 |
|
로그를 반증하는 거예요 |
|
|
|
04:11.910 --> 04:15.390 |
|
1을 그 숫자의 로그에 곱해요 |
|
|
|
04:15.390 --> 04:20.430 |
|
이것을 계산하면, 만약 1이라면, 100%의 확률이라면, 0이 |
|
|
|
04:20.430 --> 04:21.360 |
|
되겠죠. |
|
|
|
04:21.360 --> 04:24.150 |
|
손해 볼 게 없으니 좋은 거죠 |
|
|
|
04:24.180 --> 04:26.700 |
|
완벽하다면 패배는 아무것도 아니죠 |
|
|
|
04:27.090 --> 04:32.340 |
|
확률이 낮을수록 손실률도 높아지는 거죠 |
|
|
|
04:32.340 --> 04:42.840 |
|
확률을 부정적으로 기록하는 건 손실 함수를 잘 활용하는 방법이죠 |
|
|
|
04:43.230 --> 04:44.670 |
|
거창한 명칭도 있죠 |
|
|
|
04:44.670 --> 04:48.030 |
|
이 손실 함수를 교차 엔트로피 손실이라고 해요 |
|
|
|
04:48.060 --> 04:49.200 |
|
그렇게 부르더군요 |
|
|
|
04:49.200 --> 04:54.330 |
|
다음 토큰의 참일 확률의 마이너스 로그일 뿐이죠 |
|
|
|
04:54.660 --> 04:57.120 |
|
그걸 사용했어요 |
|
|
|
04:57.120 --> 05:01.410 |
|
훈련을 계속한다면 지금 그걸 이용하는 거예요 각 예측의 |
|
|
|
05:01.410 --> 05:04.860 |
|
교차 엔트로피 손실을 계산하는 거죠 |
|
|
|
05:05.190 --> 05:07.890 |
|
그리고 덧붙일 말이 있어요 |
|
|
|
05:07.920 --> 05:11.790 |
|
이것에 대한 해석이 있어요 특히 데이터 과학자들에겐요 |
|
|
|
05:11.790 --> 05:17.700 |
|
이건 분류에 사용되는 계산입니다 뭔가를 다른 빈으로 분류하려고 할 때요 |
|
|
|
05:17.700 --> 05:22.860 |
|
예전에 이미지를 4-5가지 다른 범주로 분류하려고 했던 때가 |
|
|
|
05:22.860 --> 05:28.230 |
|
있었죠 교차 엔트로피 손실요 확률을 생각해내고 교차 엔트로피 |
|
|
|
05:28.230 --> 05:33.210 |
|
손실을 이용해서 분류를 잘했는지 아닌지 알아내요 |
|
|
|
05:33.630 --> 05:39.930 |
|
사실, 말이 되는 것이 다음 토큰을 예측하는 전체 프로세스는 분류 문제이기 |
|
|
|
05:39.930 --> 05:41.580 |
|
때문이죠 |
|
|
|
05:41.580 --> 05:48.000 |
|
다음 토큰이 될 수 있는 카테고리는 아주 많다는 거죠? |
|
|
|
05:48.030 --> 05:50.880 |
|
사실, 가능한 모든 다음 패가 거기 있어요 |
|
|
|
05:50.880 --> 05:57.660 |
|
어떤 버킷이 다음 토큰에 가장 잘 맞을지 예측하는 거죠. |
|
|
|
05:57.660 --> 06:03.690 |
|
따라서 인공지능이 생성되는 과정은 사실 분류 문제일 뿐이에요 |
|
|
|
06:03.690 --> 06:09.540 |
|
다음 토큰을 분류하고 다음 토큰이 무엇인지 밝혀질 확률을 계산하는 |
|
|
|
06:09.540 --> 06:10.200 |
|
거죠 |
|
|
|
06:10.690 --> 06:18.160 |
|
흥미롭게도 우리 프로젝트의 가격 예측은 몇 년 전에 말씀드렸듯이 정말 |
|
|
|
06:18.280 --> 06:20.320 |
|
퇴보하고 있어요 |
|
|
|
06:20.320 --> 06:25.390 |
|
숫자를 예측하려 하고 분류 문제로 취급하는 거죠 그건 괜찮아요 |
|
|
|
06:25.390 --> 06:31.910 |
|
왜냐하면 0과 999 사이의 숫자가 될 테니까요 죄송합니다 1과 999 |
|
|
|
06:31.910 --> 06:36.670 |
|
사이 가능한 999개의 양동이들이죠 |
|
|
|
06:36.670 --> 06:42.790 |
|
모든 제품을 이 999개의 양동이에 효과적으로 분류하려는 거예요 |
|
|
|
06:42.790 --> 06:45.850 |
|
그래서 분류 문제로서 꽤 효과적인 거죠 |
|
|
|
06:45.850 --> 06:52.690 |
|
그래서 개척 모델들이 잘 되고 있고 우리의 오픈 소스 모델도 |
|
|
|
06:52.690 --> 06:55.120 |
|
잘 되길 바라는 거죠 |
|
|
|
06:55.390 --> 07:01.030 |
|
이 모든 걸 종합해 보면 유용한 이론이 뒷받침되겠죠 |
|
|
|
07:01.030 --> 07:04.060 |
|
하지만 지금은 다시 연습할 때예요 get get it |
|
|
|
07:04.060 --> 07:12.730 |
|
그걸 염두에 두고 오픈 소스 미세 조정은 어떻게 돼가는지 얘기해보죠
|
|
|