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.
391 lines
10 KiB
391 lines
10 KiB
WEBVTT |
|
|
|
00:01.010 --> 00:02.810 |
|
주피터 연구소에 잘 오셨어요 |
|
|
|
00:02.810 --> 00:09.050 |
|
지난 시간에는 바보 같은 모델을 살펴봤죠 제품의 가격을 예측해서 기본 기준을 설정하는 |
|
|
|
00:09.050 --> 00:10.520 |
|
방법이었죠 |
|
|
|
00:10.550 --> 00:14.270 |
|
이제 좀 더 흥미로운 기본 모델을 살펴보죠 |
|
|
|
00:14.270 --> 00:20.150 |
|
이건 물론 도표입니다 아주 간단한 모델로 평평한 평균 가격을 예측할 |
|
|
|
00:20.150 --> 00:20.900 |
|
수 있죠 |
|
|
|
00:21.230 --> 00:26.810 |
|
여기서 아주 작은 변화가 보이실 겁니다 제가 색을 바꿨죠 원래 여기 있던 노란색이 더 보기 |
|
|
|
00:26.810 --> 00:30.740 |
|
좋은 주황색으로 바뀌었어요 노란색이 잘 안 보이거든요 |
|
|
|
00:30.740 --> 00:34.370 |
|
하지만 그렇지 않다면 익숙한 사진일 거예요 |
|
|
|
00:34.460 --> 00:39.950 |
|
평균적으로 145달러가 빠져나갔어요 |
|
|
|
00:40.010 --> 00:45.470 |
|
앞서 다이어그램을 봤을 때 말씀드리고 싶은 게 있는데 이걸 봤는지 모르겠는데 |
|
|
|
00:45.470 --> 00:49.610 |
|
평균적으로 340달러나 차이가 나요 |
|
|
|
00:49.610 --> 00:55.610 |
|
즉, 평균보다 무작위로 추측하면 상당히 나쁜 결과가 나온다는 |
|
|
|
00:55.610 --> 00:56.420 |
|
거죠 |
|
|
|
00:57.170 --> 01:02.980 |
|
네, 물론 데이터 세트가 균등하게 분배되지 않았기 때문이죠 |
|
|
|
01:02.980 --> 01:06.220 |
|
노드는 평균 500달러예요 |
|
|
|
01:06.940 --> 01:08.170 |
|
네 |
|
|
|
01:08.170 --> 01:15.640 |
|
그럼 이제 이 시점에서 기능 공학으로 넘어가겠습니다 전통적인 머신 |
|
|
|
01:15.640 --> 01:20.230 |
|
러닝 기술의 가장 근본적인 것 중 하나죠 |
|
|
|
01:20.230 --> 01:23.470 |
|
데이터 과학이 예전에 쓰던 방식이죠 |
|
|
|
01:23.470 --> 01:25.060 |
|
우리라면 이렇게 했을 거예요 |
|
|
|
01:25.060 --> 01:31.120 |
|
이런 문제가 발생하면 이런 문제를 해결할 양상은 무엇인지 생각해 |
|
|
|
01:31.120 --> 01:38.560 |
|
보게 됩니다 아마존 제품의 각 제품에서 가격을 예측하는 데 가장 적합한 양상은 |
|
|
|
01:38.560 --> 01:40.570 |
|
무엇인지 말이죠 |
|
|
|
01:40.570 --> 01:47.830 |
|
기능 엔지니어링이라는 걸 하려고 많은 시간을 들였어요 특정 아이템의 어떤 |
|
|
|
01:47.830 --> 01:54.010 |
|
속성이 가격을 예측하는 데 가장 중요한지 알아내는 거죠 |
|
|
|
01:54.190 --> 01:59.530 |
|
심층 신경망이 그 모든 걸 가능하게 하기 전까진 많은 시간을 |
|
|
|
01:59.530 --> 02:00.790 |
|
투자했죠 |
|
|
|
02:00.910 --> 02:07.360 |
|
어쨌든, 이제 기능 공학에 대해 공부할 겁니다 다시 한 번 말하지만 기능 공학이나 |
|
|
|
02:07.360 --> 02:12.370 |
|
전통적인 머신 러닝이 훌륭하게 작동할 때도 있어요 |
|
|
|
02:12.370 --> 02:14.860 |
|
가끔은 그게 문제가 될 수도 있어요 |
|
|
|
02:14.860 --> 02:19.630 |
|
아마존 제품의 경우 우리가 그런 영역에 있다고 생각할 수도 있어요 |
|
|
|
02:19.690 --> 02:21.970 |
|
하지만 성능은 봐야죠 |
|
|
|
02:21.970 --> 02:24.370 |
|
먼저 한 가지 상기시켜 드리죠 |
|
|
|
02:24.370 --> 02:29.590 |
|
제 훈련 데이터를 보면 기억하실 거예요 |
|
|
|
02:29.590 --> 02:31.630 |
|
디테일이라는 게 있어요 |
|
|
|
02:31.630 --> 02:36.280 |
|
아마존 데이터 세트에서 우리가 빨아들인 필드 중 하나예요 |
|
|
|
02:36.430 --> 02:41.230 |
|
이건 파이썬 사전처럼 생긴 비트인데요 |
|
|
|
02:41.260 --> 02:42.790 |
|
언뜻 보면요 |
|
|
|
02:42.910 --> 02:44.800 |
|
키와 가치가 보이죠 |
|
|
|
02:44.860 --> 02:48.280 |
|
그러면 전체적인 것이 문자열이라는 것을 알 수 있죠 |
|
|
|
02:48.280 --> 02:50.380 |
|
하나의 큰 문자열이죠 |
|
|
|
02:50.380 --> 02:53.980 |
|
사전을 나타내는 JSON 블롭이에요 |
|
|
|
02:54.190 --> 03:00.640 |
|
이 상세 필드를 읽을 수 있다면 좋을 것 같아요 트레이닝과 테스트에서 모든 데이터 |
|
|
|
03:00.640 --> 03:07.040 |
|
세트 포인트를요 그리고 텍스트에서 파이썬 사전으로 전환하는 거죠 |
|
|
|
03:07.040 --> 03:10.160 |
|
다행히 표준 라이브러리가 그걸 가능하게 하죠 |
|
|
|
03:10.160 --> 03:19.430 |
|
JSON 패키지를 이용해 JSON을 할 수 있어요 Loadstring을 하면 이런 문자열을 개체로 변환하죠 |
|
|
|
03:19.430 --> 03:22.880 |
|
그걸 실행하고 그걸 실행할 거예요 |
|
|
|
03:22.910 --> 03:25.190 |
|
몇 초면 돼요 |
|
|
|
03:25.190 --> 03:30.830 |
|
이제 트레인0.com 특징을 입력할 수 있어요 |
|
|
|
03:30.830 --> 03:36.830 |
|
그리고 이 문자열이 파이썬 사전에 변환된 걸 보게 될 거예요 |
|
|
|
03:37.010 --> 03:37.550 |
|
어디 보죠 |
|
|
|
03:37.550 --> 03:38.540 |
|
실행해 보죠 |
|
|
|
03:38.570 --> 03:39.680 |
|
됐어요 |
|
|
|
03:39.710 --> 03:40.820 |
|
보면 알잖아요 |
|
|
|
03:40.850 --> 03:41.180 |
|
미안해요 |
|
|
|
03:41.210 --> 03:46.220 |
|
사전을 확대해 보면 그 텍스트와 같은 걸 볼 수 있죠 |
|
|
|
03:46.430 --> 03:50.900 |
|
.키를 입력하면 여기 키가 있는 게 보이죠 |
|
|
|
03:51.380 --> 03:59.120 |
|
우리 데이터에 문제가 있어요 이 사전들은 다른 제품들에 대해 다르게 채워져 있다는 |
|
|
|
03:59.120 --> 04:00.320 |
|
거죠 |
|
|
|
04:00.320 --> 04:05.320 |
|
어떤 제품은 기능이 전혀 없어요 |
|
|
|
04:05.440 --> 04:09.700 |
|
어떤 건 특징이 거의 없어요 |
|
|
|
04:09.700 --> 04:11.950 |
|
일관성이 없는 포집이죠 |
|
|
|
04:11.950 --> 04:13.630 |
|
get get get을 해 보죠 |
|
|
|
04:13.720 --> 04:21.520 |
|
또 다른 유용한 파이썬 표준 라이브러리 도구를 사용할 수 있습니다 컬렉션 패키지에서 counter를요 |
|
|
|
04:21.550 --> 04:26.470 |
|
counter로 할 수 있는 건 숫자를 세는 겁니다 그런 |
|
|
|
04:26.470 --> 04:35.290 |
|
다음 기능 카운트, 가장 흔한 것 .40 같은 걸 말할 수 있죠 가장 흔한 걸 보여달라고 요청하는 거예요 |
|
|
|
04:35.290 --> 04:37.990 |
|
실행해보죠 뭐가 나오는지 보세요 |
|
|
|
04:38.200 --> 04:44.740 |
|
가장 일반적인 기능은 40개입니다 모든 훈련 데이터 포인트에 대항해 |
|
|
|
04:44.740 --> 04:46.450 |
|
채워져 있죠 |
|
|
|
04:46.690 --> 04:51.340 |
|
날짜 먼저 사용 가능은 많이 채운다는 거죠 |
|
|
|
04:51.370 --> 04:52.180 |
|
거의요 |
|
|
|
04:52.180 --> 04:52.810 |
|
네 |
|
|
|
04:52.840 --> 05:02.260 |
|
인구의 90%가 데이터 집합에 있는 400,000명 중 360,000명 정도에 |
|
|
|
05:02.260 --> 05:03.970 |
|
해당하죠 |
|
|
|
05:04.090 --> 05:07.190 |
|
품목의 무게는 아주 많이 차 있어요 |
|
|
|
05:07.220 --> 05:08.990 |
|
제조사 브랜드예요 |
|
|
|
05:09.020 --> 05:10.820 |
|
비슷한 베스트셀러예요 |
|
|
|
05:10.820 --> 05:14.780 |
|
랭크도 가득 찼다가 사라지기 시작하죠 |
|
|
|
05:15.050 --> 05:19.910 |
|
그럼 어떤 특징을 사용하면 좋을까요? |
|
|
|
05:19.910 --> 05:22.520 |
|
많이 들어찬 걸 찾고 있어요 |
|
|
|
05:22.520 --> 05:23.600 |
|
시작이 좋네요 |
|
|
|
05:23.630 --> 05:30.110 |
|
지속적으로 채워지길 원하고 가격과 의미 있게 연관될 가능성이 |
|
|
|
05:30.110 --> 05:33.350 |
|
있는 뭔가가 되길 원해요 |
|
|
|
05:34.040 --> 05:38.600 |
|
이 아이템의 무게를 보면 꽤 확실한 후보 같아요 |
|
|
|
05:38.630 --> 05:44.840 |
|
당신 생각에는 확실하진 않지만 무게와 가격 사이에 상관관계가 |
|
|
|
05:44.840 --> 05:47.300 |
|
있을 거예요 |
|
|
|
05:47.510 --> 05:56.180 |
|
더 크고 무거운 제품이나 평균적으로 더 가치 있는 제품요 브랜드가 기능과 정확히 |
|
|
|
05:56.360 --> 06:01.100 |
|
일치하진 않겠지만 베스트셀러 순위에 들 수 |
|
|
|
06:01.100 --> 06:03.920 |
|
있는 방법이 있을 거예요 |
|
|
|
06:03.950 --> 06:04.880 |
|
중요한 단서일 수도 있어요 |
|
|
|
06:04.880 --> 06:07.360 |
|
베스트셀러로 잘 팔릴 것 같아요 |
|
|
|
06:07.390 --> 06:08.980 |
|
이것부터 시작하죠 |
|
|
|
06:09.010 --> 06:12.430 |
|
이런 것들은 처음부터 합리적인 기능으로 느껴졌어요 |
|
|
|
06:12.430 --> 06:16.990 |
|
한 가지만 더 추가할게요 아까 얘기했던 것으로 되돌아가는 거죠 |
|
|
|
06:17.320 --> 06:21.850 |
|
약간 조잡한 비트부터 시작할게요 |
|
|
|
06:21.880 --> 06:25.090 |
|
여기 비트를 보면 좀 진부해요 |
|
|
|
06:25.210 --> 06:34.510 |
|
이 사전에 채워진 무게는 아주 더러운 데이터예요 |
|
|
|
06:34.510 --> 06:40.450 |
|
파운드 단위로도 나오고 온스 단위로 나오기도 하고 100g 단위로 |
|
|
|
06:40.450 --> 06:45.490 |
|
나오기도 해요 1mg이나 킬로그램 등 다양하죠 |
|
|
|
06:45.490 --> 06:52.000 |
|
여기 if문이 있는데요 어떤 웨이트 단위를 입력했는지 |
|
|
|
06:52.000 --> 06:58.720 |
|
알아내고 파운드로 변환한 다음 그 양을 반환하죠 |
|
|
|
06:58.720 --> 07:00.100 |
|
그런 거였군요 |
|
|
|
07:00.100 --> 07:03.100 |
|
이게 효과가 있다는 걸 꼭 설득할 필요는 없어요 |
|
|
|
07:03.100 --> 07:04.270 |
|
내 말을 믿어요 |
|
|
|
07:04.270 --> 07:09.330 |
|
아니면 날 못 믿겠으면 들어와서 이걸 써봐요 |
|
|
|
07:09.510 --> 07:16.170 |
|
그리고 제 운동 기구에 쓸 웨이트도 전부 get 할 거예요 |
|
|
|
07:16.350 --> 07:25.230 |
|
그리고 이 선은 0을 걸러내는 거예요 단위를 인식하지 못하는 게 있으면 |
|
|
|
07:25.230 --> 07:31.290 |
|
0을 반환하기 때문에 훈련 데이터 집합의 평균 |
|
|
|
07:31.290 --> 07:36.030 |
|
무게를 계산할 수 있어요 |
|
|
|
07:36.030 --> 07:40.800 |
|
평균 체중은 13파운드예요 6개요 |
|
|
|
07:40.950 --> 07:44.430 |
|
왜 평균 무게를 재야 하냐고 하실 수도 있겠네요 |
|
|
|
07:44.430 --> 07:49.350 |
|
약간 기술적인 이유에서죠 이런 선형 퇴행 과정을 |
|
|
|
07:49.350 --> 07:55.290 |
|
다룰 때는 중량 인구가 없는 아이템을 어떻게 다룰지 결정해야 |
|
|
|
07:55.290 --> 07:59.880 |
|
합니다 훈련 아이템 중량 없는 10%를요 |
|
|
|
07:59.880 --> 08:04.770 |
|
다양한 기법을 사용할 수 있어요 데이터 과학자들도 |
|
|
|
08:04.770 --> 08:11.180 |
|
알 텐데 하중이 있는지 없는지를 나타내는 기능을 활용할 수 있어요 |
|
|
|
08:11.300 --> 08:16.880 |
|
그리고 모델의 몸에 그걸 어떻게 적용할지 어설프게 표현해야 해요 |
|
|
|
08:16.940 --> 08:22.880 |
|
완벽하게 신뢰할 수 있는 접근법이 하나 있는데 무게가 없는 |
|
|
|
08:22.880 --> 08:26.420 |
|
건 평균을 골라서 집어넣는 거예요 |
|
|
|
08:26.420 --> 08:34.700 |
|
기본값으로 함수 get-tier를 설정했는데 항목을 취하고 그 가중치를 얻으려 하죠 |
|
|
|
08:34.700 --> 08:41.360 |
|
가중치를 반환하거나 가중치가 없거나 0이면요 문제가 될 테니까요 |
|
|
|
08:41.360 --> 08:46.040 |
|
무게가 없는 건 평균 무게로 바꿔요 |
|
|
|
08:46.580 --> 08:49.940 |
|
기본값 get 웨이트고요 |
|
|
|
08:50.690 --> 08:55.100 |
|
기능 공학에서 꽤 지저분한 작업이 되었어요 |
|
|
|
08:55.100 --> 08:58.760 |
|
잠시 쉴 테니 다른 기능들을 잘 생각해 보세요 |
|
|
|
08:58.790 --> 09:03.830 |
|
잠시 후에는 베스트셀러 순위에 오르겠습니다 기능 엔지니어링과 모델을 실행하기 |
|
|
|
09:03.830 --> 09:04.880 |
|
전에요 |
|
|
|
09:04.880 --> 09:06.650 |
|
가격 예측도 하고요 |
|
|
|
09:06.680 --> 09:07.910 |
|
이따 봐요
|
|
|