머신 러닝 및 신경망 - 페이지 17

 

딥 러닝 및 기계 학습을 위한 PyTorch – 전체 과정(5-10부 설명)


딥 러닝 및 기계 학습을 위한 PyTorch - 전체 과정


파트 5

  • 04:00:00 이 섹션에서는 강사가 PyTorch를 사용하여 GPU 액세스를 확인하고 장치에 구애받지 않는 코드를 설정하는 방법을 설명합니다. "torch.cuda.is_available()" 명령을 사용하여 사용자는 PyTorch가 GPU에 액세스할 수 있는지 확인할 수 있습니다. 또한 PyTorch를 실행하려면 GPU를 사용하도록(사용 가능한 경우) 장치 변수를 설정하거나 기본적으로 CPU를 사용하도록 설정해야 합니다. "args.device=torch.device('cuda' if torch.cuda.is_available()"를 설정하여 사용 가능한 항목에 따라 PyTorch가 CPU 또는 GPU에서 실행될 수 있도록 장치 독립적 코드를 설정하는 것도 중요합니다. else 'cpu')"를 Python 스크립트에서 사용합니다. 강사는 PyTorch를 사용하여 작업할 때 장치에 구애받지 않는 코드를 설정하는 것이 다른 장치에서 코드를 실행할 수 있기 때문에 모범 사례라고 강조합니다.

  • 04:05:00 이 섹션에서 강사는 GPU를 사용하면 계산 속도가 빨라지고 텐서 연산과 같은 수치 계산으로 작동하는 기계 학습 모델에 어떤 이점이 있는지 설명합니다. GPU를 사용하려면 텐서와 모델을 GPU로 전송해야 하는데, PyTorch에서는 'to' 메서드를 사용하여 쉽게 할 수 있습니다. 코드는 GPU 사용 가능 여부에 관계없이 실행되도록 장치 독립적으로 만들 수 있습니다. 유사하게, 필요하다면 텐서를 다시 CPU로 옮길 수도 있으며, 이를 위해 `cpu()` 메서드를 사용할 수 있습니다. 강사는 장치 문제가 PyTorch에서 세 번째로 가장 흔한 오류이며 텐서와 모델이 저장되는 장치 유형을 염두에 두는 것이 좋다고 강조합니다.

  • 04:10:00 이 섹션에서는 강사가 GPU에서 PyTorch 작업의 기본 사항에 대해 설명합니다. 그는 CPU와 GPU 사이를 전환하는 방법과 GPU에서 텐서로 NumPy 계산을 사용할 때 오류를 피하는 방법을 설명합니다. 또한 학습자가 learn.pytorch.io에서 사용할 수 있는 일련의 연습과 추가 커리큘럼을 통해 학습한 내용을 연습하도록 권장합니다. 연습은 이전 섹션에서 다룬 내용을 기반으로 하며 학습자는 PyTorch 설명서를 사용하여 연습을 완료하는 것이 좋습니다. 마지막으로 강사는 두 개의 화면을 설정하고 토치를 가져와서 Colab에서 이러한 연습에 접근하는 방법에 대한 팁을 제공합니다.

  • 04:15:00 이 섹션에서는 강사가 PyTorch 과정의 연습 및 추가 커리큘럼에 대해 설명합니다. 연습은 코드 기반이며 각 연습에 대한 템플릿을 포함합니다. 추가 커리큘럼은 읽기 기반이며 강사는 PyTorch 기본 자습서, 빠른 시작 및 텐서 섹션을 살펴보고 "텐서란 무엇입니까?" 동영상. 강사는 또한 데이터 준비 및 텐서로 전환, 사전 훈련된 모델 선택 또는 구축, 손실 함수 선택 및 최적화, 훈련 루프 구축, 모델 피팅, 모델 평가, 실험 등을 포함하는 PyTorch 워크플로우에 대해 설명합니다. 학습된 모델을 개선하고 저장하고 다시 로드합니다. 강사는 학습자가 코드 및 설명서를 따라하고, 리소스를 검색하고, 다시 시도하고, PyTorch 포럼에서 질문하도록 권장합니다.

  • 04:20:00 비디오의 이 섹션에서 강사는 Colab에서 새 노트북을 열고 제목을 "01 PyTorch Workflow"로 지정하는 것으로 시작합니다. 그는 함께 코딩하고 데이터 준비 및 로드, PyTorch에서 기계 학습 모델 구축, 모델 교육, 모델 평가 및 모델 저장/로드를 포함하는 PyTorch 종단 간 워크플로를 만드는 데 집중할 것이라고 설명합니다. . 강사는 또한 그들이 신경망을 위한 PyTorch의 모든 빌딩 블록을 포함하는 PyTorch의 nn 모듈을 사용할 것이라고 언급합니다.

  • 04:25:00 이 섹션에서 강사는 신경망에서 사용되는 계산 그래프의 기본 빌딩 블록을 탐색하여 PyTorch에서 torch.nn을 사용하는 방법에 대해 설명합니다. 이러한 빌딩 블록을 결합하면 데이터 과학자와 기계 학습 엔지니어가 다양한 유형의 신경망을 구축할 수 있습니다. 강사는 모델이 패턴을 학습할 수 있도록 데이터를 준비하고 수치 표현으로 로드하는 PyTorch 워크플로우의 첫 번째 단계의 중요성을 강조합니다. 데이터 인코딩에 사용되는 숫자 표현 유형은 데이터 유형에 따라 다릅니다. 두 번째 단계는 신경망을 구축하여 숫자 표현의 패턴을 학습한 다음 학습된 패턴을 이미지 인식 또는 스팸 분류와 같은 특정 작업에 사용하는 것입니다.

  • 04:30:00 이 섹션에서 강사는 데이터를 수치 표현으로 변환하고 모델을 구축하여 해당 표현에서 패턴을 찾는 기계 학습의 두 부분으로 구성된 게임을 소개합니다. 그런 다음 강사는 이 프로세스를 보여주기 위해 선형 회귀 공식을 사용하여 알려진 데이터를 생성합니다. 공식의 가중치와 편향은 모델이 다양한 예를 살펴봄으로써 학습할 매개변수로 사용됩니다. Python의 코드는 숫자 범위를 생성하고, 변수 X에 값을 할당하고, 가중치 곱하기 X + 편향과 같은 Y 공식을 생성하는 데 사용됩니다. X와 Y의 길이와 값이 표시되고 X와 Y의 처음 10개 값이 표시됩니다.

  • 04:35:00 이 섹션에서 강사는 기계 학습에서 데이터를 교육 및 테스트 세트로 분할하는 것의 중요성에 대해 설명합니다. 그는 개념을 설명하기 위해 대학 과정과 시험의 비유를 사용합니다. 교육 세트는 모든 과정 자료와 유사하고 검증 세트는 모의 시험과 유사하며 테스트 세트는 최종 시험입니다. 목표는 모델이 보이지 않는 데이터에 적응할 수 있도록 일반화를 달성하는 것입니다. 강사는 정확한 모델을 만들기 위해서는 데이터를 올바르게 분할하는 것이 중요하다고 강조합니다.

  • 04:40:00 PyTorch 전체 과정의 이 섹션에서 강사는 기계 학습 모델에서 일반화의 중요성과 교육 및 테스트에 일반적으로 사용되는 세 가지 데이터 세트인 교육, 검증 및 테스트 세트에 대해 설명합니다. 그는 또한 훈련 세트가 일반적으로 데이터의 60-80%를 갖고 테스트 세트가 10-20%를 갖는 이러한 각 세트에 사용되는 공통 백분율 분할에 대해 설명합니다. 그런 다음 강사는 인덱싱을 사용하여 X 및 Y 값이 있는 샘플 데이터 세트를 사용하여 교육 및 테스트 세트를 생성하여 각 분할에 대해 적절한 수의 샘플을 선택하는 방법을 시연합니다. 마지막으로 그는 더 복잡한 데이터 세트에서 유효성 검사 세트에 대한 사용 사례가 종종 있지만 훈련 및 테스트 세트가 가장 일반적으로 사용된다고 설명합니다.

  • 04:45:00 이 섹션에서 강사는 교육 데이터와 테스트 데이터를 비교하는 데 사용할 "플롯 예측"이라는 함수를 작성하여 데이터 시각화의 중요성을 강조합니다. 이 함수는 X 훈련, Y 훈련, X 테스트, Y 테스트 및 예측을 매개변수로 받은 다음 matplotlib 라이브러리의 산점도를 사용하여 훈련 데이터를 파란색으로 플로팅합니다. 테스트 데이터는 동일한 산포 함수를 사용하여 녹색으로 표시됩니다. 이 함수는 또한 예측이 있는지 확인하고 예측이 있는 경우 분산 함수를 사용하여 플롯합니다. 데이터를 시각화하면 이해하고 해석하기가 더 쉬워집니다.

  • 04:50:00 비디오의 이 섹션에서 강사는 기계 학습 모델을 교육하고 평가하는 프로세스에 대해 설명합니다. 테스트 데이터의 값을 정확하게 예측하기 위해 교육 데이터에서 모델을 교육하는 것이 목표라고 설명합니다. 그들은 훈련 데이터가 파란색으로 표시되고 테스트 데이터가 녹색으로 표시되는 간단한 선형 데이터 세트를 사용하여 이를 시연합니다. 그런 다음 강사는 선형 회귀의 개념을 소개하고 선형 회귀를 위한 PyTorch 모델을 구축하는 다음 섹션의 단계를 설정합니다. 또한 Google Colab에 대한 몇 가지 문제 해결 팁을 제공합니다.

  • 04:55:00 비디오의 이 섹션에서는 순수한 PyTorch를 사용하여 선형 회귀 모델을 만드는 방법을 배웁니다. 강사는 PyTorch가 PyTorch 모델의 레고 빌딩 브릭과 같은 nn.module 위에 구축된다고 설명합니다. PyTorch의 거의 모든 것은 nn.module에서 상속되며 모듈은 다른 모듈을 포함할 수 있으므로 복잡한 신경망을 쉽게 구축할 수 있습니다. 그런 다음 강사는 init 함수로 생성자를 만들고, nn.parameter를 사용하여 가중치 매개변수를 만들고, torch.rand를 사용하여 임의의 매개변수로 설정하는 과정을 안내합니다. 강사는 또한 require_grad 및 dtype을 설정하는 방법을 설명합니다.

6부

  • 05:00:00 이 섹션에서는 강사가 PyTorch를 사용하여 선형 회귀 모델을 만드는 방법을 설명합니다. 그들은 모델에 대한 클래스를 생성하고 모듈 속성에 할당될 때 매개변수 목록에 자동으로 추가되는 가중치 및 편향에 대한 매개변수로 이를 초기화하는 것으로 시작합니다. 그런 다음 선형 회귀 수식을 기반으로 하는 모델의 계산을 정의하는 정방향 방법을 만듭니다. 모델의 목표는 기계 학습의 전제인 경사하강법을 통해 학습 데이터의 패턴을 나타내기 위해 임의의 매개변수를 업데이트하는 것입니다.

  • 05:05:00 이 섹션에서 강사는 경사 하강법과 역전파라는 두 가지 주요 알고리즘을 사용하여 수행되는 데이터에서 원하는 가중치 및 편향 값을 더 잘 나타내기 위해 무작위 값을 조정하는 프로세스에 대해 설명합니다. 'grad가 true와 같아야 함'의 사용은 모델을 사용하여 수행된 계산을 통해 그래디언트를 추적하여 알고리즘을 올바른 방향으로 유도하는 것으로 설명됩니다. 개체 지향 프로그래밍의 중요성과 이러한 알고리즘을 구현하는 데 있어 PyTorch의 역할이 강조되며 코드에 대한 직관을 얻는 데 도움이 되는 추가 리소스가 제안됩니다. 강사는 또한 현재 모델이 알려진 매개변수가 있는 간단한 데이터세트를 다루는 반면 더 복잡한 데이터세트에는 종종 nn의 모듈로 정의된 매개변수가 있다는 사실을 강조합니다.

  • 05:10:00 이 섹션에서 강사는 첫 번째 PyTorch 모델을 만들 때의 주요 내용을 설명합니다. PyTorch의 모든 모델은 nn.modgable에서 상속되며 모델 내에서 발생하는 계산을 정의하기 위해 forward 메서드를 재정의해야 합니다. 또한 모델이 학습할 때 torch.auto grad 모듈을 사용하여 경사 하강법 및 역전파를 통해 가중치와 편향 값을 업데이트합니다. 강사는 이 개념을 완전히 이해하기 위해 성적표에 링크된 두 개의 비디오를 확인할 것을 권장합니다. 또한 강사는 신경망에 필요한 모든 빌딩 블록을 포함하는 torch.nn 모듈과 같은 몇 가지 PyTorch 모델 빌딩 필수 요소를 소개합니다.

  • 05:15:00 이 섹션에서 강사는 torch.nn, torch.nn.module, torch.optim 및 torch.utils.dataset를 포함하여 PyTorch의 기본 모듈을 설명합니다. torch.nn.module은 모든 신경망 모듈의 기본 클래스이며 순방향 계산에서 일어나는 일을 정의하는 순방향 방법을 덮어써야 합니다. Torch.optim에는 임의의 값으로 시작하여 이상적인 값을 더 잘 나타내도록 조정하는 모델 값을 최적화하는 알고리즘이 포함되어 있습니다. 강사는 또한 PyTorch 치트 시트를 라이브러리를 추가로 탐색하는 데 유용한 리소스로 언급합니다.

  • 05:20:00 이 섹션에서 강사는 PyTorch 워크플로우에 약간의 색상과 코드를 추가하고 데이터 세트 생성, 모델 구축 및 교육, 모델 매개변수 최적화, 모델 평가 및 실험을 통한 개선에 사용되는 중요한 PyTorch 모듈을 다룹니다. 그런 다음 강사는 선형 회귀 모델의 인스턴스를 생성하고 점 매개변수를 사용하여 값 텐서를 확인하여 PyTorch 모델의 내용을 확인하는 방법을 보여줍니다. 강사는 또한 일관된 값으로 매개변수를 생성하기 위해 무작위 시드를 설정합니다.

  • 05:25:00 섹션에서 가중치 및 편향 매개변수에 대한 무작위 값으로 딥 러닝 모델을 초기화하는 방법에 대해 배웠습니다. 또한 재현성을 위해 무작위 시드 값을 사용하는 것의 중요성에 대해서도 배웠습니다. 딥 러닝의 기본 전제는 훈련 데이터를 사용하여 경사 하강법 및 역전파를 통해 이러한 무작위 값을 이상적인 값에 최대한 가깝게 조정하는 것입니다. 다음 섹션에서 동영상은 모델의 임의 매개변수 값을 사용하여 예측하는 방법을 다룹니다.

  • 05:30:00 이 섹션의 비디오는 PyTorch 모델의 예측 능력을 테스트하는 과정을 설명합니다. 모델의 정방향 방법은 입력 데이터 X를 가져와 모델을 통해 전달하여 예측을 수행합니다. 동영상은 10개의 변수로 구성된 X test를 입력하고 모델의 출력 Y pred를 관찰하여 모델의 예측력을 테스트하는 방법을 보여줍니다. 이 비디오는 또한 PyTorch 모델을 생성하는 동안 발생할 수 있는 일반적인 오류를 다루고 수정 사항을 제공합니다.

  • 05:35:00 이 섹션에서는 앞에서 정의한 Ford 방법을 사용하여 테스트 데이터를 실행하여 모델의 예측을 봅니다. 예측은 이상적인 예측에서 충격적으로 멀리 떨어져 있는 것 같습니다. 이 코드는 또한 토치 추론 모드를 도입했습니다. 이 모드는 예측을 할 때 그래디언트 추적을 비활성화하는 데 사용되는 컨텍스트 관리자로, PyTorch가 더 적은 데이터를 추적하고 더 빠르게 예측할 수 있도록 합니다. Torch no grad는 유사한 작업을 수행할 수 있지만 추론 모드는 PyTorch 문서 및 비디오에서 제공되는 Twitter 스레드에 설명된 대로 no grad에 비해 몇 가지 이점이 있습니다. 따라서 추론 모드는 현재 추론을 수행하는 데 선호되는 방법입니다.

  • 05:40:00 이 섹션의 비디오는 PyTorch에서 예측을 할 때 모델이 훈련 모드가 아닌 추론 모드에 있음을 보장하기 때문에 torch.inference_mode 컨텍스트 관리자를 사용하는 것의 중요성을 설명합니다. 이 비디오는 또한 임의의 매개변수로 모델을 초기화하면 성능이 저하될 수 있음을 강조하고 0 값을 사용하거나 다른 모델에서 매개변수를 전송하는 것과 같은 일부 초기화 옵션을 제공합니다. 그러나 비디오의 주요 초점은 모델의 예측 성능이 얼마나 낮은지를 측정하는 손실 함수를 사용하여 알 수 없는 매개변수에서 알려진 매개변수로 이동하여 모델을 교육하는 것입니다. 비디오는 "손실 함수", "비용 함수" 및 "기준"이라는 용어가 기계 학습에서 종종 같은 의미로 사용된다는 점에 주목합니다.

  • 05:45:00 이 섹션에서 강사는 이상적인 출력과 비교하여 모델의 예측이 얼마나 잘못되었는지 측정하는 데 사용되는 손실 함수의 개념을 소개합니다. 강사는 손실 함수를 계산하는 방법을 설명하기 위해 빨간색 점과 녹색 점 사이의 거리를 측정하는 예를 사용합니다. 비디오는 또한 모델의 손실을 고려하고 가중치 및 편향 값과 같은 매개변수를 조정하여 손실 함수를 개선하는 옵티마이저의 중요성을 다룹니다. 이 섹션은 손실 함수와 옵티마이저의 원칙이 매개변수가 두 개인 모델이든 수백만 개의 매개변수가 있는 모델이든, 컴퓨터 비전 모델이든 직선의 점을 예측하는 것과 같은 간단한 모델이든 상관없이 동일하게 유지된다는 설명으로 결론을 내립니다.

  • 05:50:00 딥 러닝 및 기계 학습을 위한 PyTorch 과정의 이 섹션에서 강사는 옵티마이저를 사용하여 모델의 매개변수를 손실 함수를 낮추는 값으로 조금씩 이동하여 모델의 정확도를 개선하는 것의 중요성을 설명합니다. 예측. PyTorch에는 손실 함수 및 옵티마이저를 구현하기 위한 기능이 내장되어 있으며 강사는 예측 값과 실제 값의 절대 차이를 측정하는 평균 절대 오차라고도 하는 L1 손실에 중점을 둡니다. 강사는 평균 절대 오차를 설명하기 위해 다채로운 그래프를 제공하고 PyTorch의 NN 모듈을 사용하여 손실 함수를 구현하는 방법을 보여줍니다. 모델 교육의 목표는 예측 값과 실제 값 사이의 거리를 최소화하고 평균 절대 오차의 전체 값을 최소화하는 것입니다.

  • 05:55:00 이 섹션에서 강사는 손실을 최소화하기 위해 가중치 및 편향과 같은 모델 매개변수를 조정하는 손실 함수와 함께 작동하는 기계 학습에서 옵티마이저의 역할에 대해 설명합니다. PyTorch에는 SGD(Stochastic Gradient Descent) 및 Adam과 같은 다양한 최적화 알고리즘을 사용할 수 있는 torch.optim이 있습니다. 둘 다 손실을 최소화하기 위해 모델 매개변수를 임의로 조정하지만 특정 문제에 가장 적합한 것을 선택하는 문제입니다. 대부분은 무작위 조정으로 시작한 다음 추가 조정이 없을 때까지 손실을 최소화하는 방향으로 계속 조정하는 SGD를 선택합니다. 옵티마이저는 매개변수 또는 옵티마이저가 최적화해야 하는 매개변수와 최적화 시 설정해야 하는 가장 중요한 하이퍼 매개변수인 학습률(LR)이라는 두 개의 인수가 필요합니다.

7부

  • 06:00:00 이 섹션에서는 강사가 모델 매개변수와 하이퍼 매개변수가 무엇이며 딥러닝 과정에서 이들의 역할에 대해 설명합니다. 모델 매개변수는 모델이 설정하는 값이고 하이퍼 매개변수는 데이터 과학자 또는 기계 학습 엔지니어가 설정하는 값입니다. 학습률은 하이퍼 매개변수이며 그 값은 최적화 중에 매개변수의 변경 크기를 결정합니다. 학습률이 작으면 변화가 적고 학습률이 크면 변화가 큽니다. 강사는 또한 특정 문제에 대해 적절한 손실 함수 및 옵티마이저를 선택하는 것의 중요성에 대해서도 이야기합니다. 마지막으로 강사는 PyTorch에서 훈련 루프를 구축하는 과정을 설명합니다.

  • 06:05:00 이 섹션에서 강사는 PyTorch에서 교육 루프 및 테스트 루프를 구축하는 데 필요한 단계에 대해 설명합니다. 첫 번째 단계는 예측을 개선하고 모델을 통과하여 손실을 최소화하기 위해 데이터를 여러 번 반복하는 것입니다. 강사는 순방향 통과는 데이터가 모델의 순방향 함수를 통해 이동할 때이며 손실은 모델의 예측을 실측 레이블과 비교하여 계산된다고 설명합니다. 그런 다음 강사는 옵티마이저를 소개하고 역방향 패스가 손실에 대한 각 매개변수의 기울기를 계산하여 옵티마이저가 모델의 매개변수를 조정하여 기울기 하강법을 통해 손실을 개선할 수 있도록 한다고 설명합니다. 강사는 PyTorch가 역전파 및 경사하강법의 수학을 구현하여 제한된 수학 배경을 가진 사람들이 기계 학습에 대해 더 쉽게 배울 수 있다고 강조합니다.

  • 06:10:00 이 섹션에서 강사는 기계 학습에서 모델 매개변수를 최적화하는 데 사용되는 경사 하강법의 개념을 소개합니다. 강사는 언덕의 예를 사용하여 언덕의 바닥에 도달하기 위해 경사가 덜 가파른 방향으로 모델을 이동해야 하는 방법을 설명합니다. 이는 손실이 0임을 나타냅니다. 그런 다음 강사는 "gradient equals true" 매개변수를 사용하여 에포크 수를 설정하고 모델을 교육 모드로 설정하는 것과 관련된 경사 하강법 실행을 위한 몇 가지 코드를 작성합니다. 강사는 또한 pytorch 모델에 다양한 모드를 사용할 수 있다고 언급하고 시청자가 다양한 설정을 실험해 보도록 권장합니다.

  • 06:15:00 비디오의 이 섹션에서 강사는 PyTorch 모델 교육을 위한 순방향 패스 구현에 대해 설명합니다. 순방향 패스는 모델의 순방향 함수를 통해 데이터를 전달하여 예측을 한 다음 MAE 손실 함수를 사용하여 실제 학습 값과 비교합니다. optimizer.zero_grad() 함수도 도입되어 손실을 역으로 계산하고 경사 하강법을 사용하여 모델 매개변수를 업데이트하기 전에 모든 경사도를 0으로 설정합니다. 이러한 단계는 모델이 학습하는 방법을 이해하는 데 중요하며 과정의 후반 섹션에서 더욱 최적화되고 기능화됩니다.

  • 06:20:00 이 섹션에서 강사는 순방향 패스, 손실 계산, 옵티마이저 기울기 제로화, 역전파 수행, 기울기 하강을 통한 옵티마이저 스테핑을 포함하는 PyTorch의 교육 루프의 5가지 주요 단계를 살펴봅니다. . 강사는 이러한 단계의 순서가 때때로 모호할 수 있지만 역전파 후에 옵티마이저 단계를 유지하는 것이 중요하다고 지적합니다. 또한 강사는 루프 간 누적을 방지하기 위해 각 반복에서 옵티마이저 그래디언트를 0으로 설정해야 하는 이유도 설명합니다. 강사는 이러한 단계를 더 잘 이해하기 위해 훈련 루프 작성 연습을 제안하고 추가 학습을 위한 노래와 추가 리소스를 제공합니다.

  • 06:25:00 비디오의 이 섹션에서 발표자는 순방향 통과, 손실 값 계산, 최적화 기울기 제로화, 손실 함수에 대한 역전파 수행을 포함하는 PyTorch의 교육 루프 단계를 요약합니다. 학습 루프는 모델이 학습 데이터의 패턴을 학습하는 데 도움이 되는 반면 테스트 루프는 보이지 않는 데이터의 패턴을 평가합니다. 또한 발표자는 최적화 기울기를 0으로 설정하는 이유를 설명하고 손실 함수의 기울기를 계산하는 역전파 개념을 소개합니다.

  • 06:30:00 이 섹션에서는 강사가 PyTorch 딥 러닝의 기울기 및 손실 함수 곡선의 개념을 설명합니다. 매개변수에 대해 'requires grad'를 true로 설정하면 PyTorch는 각 매개변수의 변화도를 추적하고 모든 매개변수에 대한 손실 함수 곡선을 생성할 수 있습니다. 역전파 및 후속 경사 하강법의 목표는 최소 손실을 나타내는 곡선의 가장 낮은 지점을 계산하는 것입니다. 강사는 기계 학습의 기울기 개념과 기울기 하강법이 스텝 포인트와 함께 작동하는 방식을 설명합니다. Zero Grad Loss를 뒤로 최적화하고, 단계를 최적화하고, Grad를 필요로 함으로써 PyTorch는 자동으로 기울기를 추적하고 곡선의 바닥을 찾는 등 뒤에서 이 작업의 대부분을 수행합니다.

  • 06:35:00 이 섹션에서는 강사가 옵티마이저와 학습률에 대해 설명합니다. 옵티마이저는 모델 매개변수를 가져오고 자동 기울기 계산을 위해 토치 오토그라드라는 메커니즘을 사용하여 각 매개변수에 대한 곡선을 생성하여 곡선의 바닥에 더 가까워집니다. 학습 속도는 옵티마이저가 수렴에 가까워질수록 더 작은 단계를 수행하면서 각 단계에서 매개 변수를 얼마나 크게 또는 작게 변경하는지 결정합니다. 또한 강사는 모델 초기화, 옵티마이저 정의, 학습률, 포워드 패스 계산, 역전파 및 옵티마이저 단계를 포함하는 모델 교육과 관련된 5단계를 다룹니다. 마지막으로 강사는 이 루프를 코드 반복을 방지하는 함수로 변환할 수 있다고 언급합니다.

  • 06:40:00 "딥 러닝 및 머신 러닝을 위한 PyTorch – 전체 과정"의 이 섹션에서 강사는 모델이 패턴과 데이터를 학습하는 방법이므로 PyTorch에서 훈련 루프 작성의 중요성을 강조합니다. 이 비디오는 또한 수학적 배경에 관심이 있는 사람들을 위해 역전파 및 경사하강법에 대한 추가 리소스를 제공합니다. 강사는 손실 함수 및 옵티마이저의 선택이 각 문제에 따라 다르며 회귀 문제의 경우 MAE 손실 및 L1 손실을, 분류 문제의 경우 이진 교차 엔트로피 손실을 권장한다고 설명합니다. 이 섹션은 단 두 개의 매개변수와 단일 에포크가 있는 모델을 사용하는 훈련 루프의 데모로 끝납니다.

  • 06:45:00 이 섹션에서 강사는 PyTorch를 사용하여 기계 학습 모델을 계속 교육하고 경사 하강법을 통해 모델 매개변수가 업데이트됨에 따라 손실 함수가 어떻게 내려가는지 보여줍니다. 강사는 손실 값이 낮을수록 모델이 더 잘 진행되고 있음을 나타내며 기계 학습의 무작위성으로 인한 값의 작은 차이는 걱정할 필요가 없다고 강조합니다. 그런 다음 강사는 시청자에게 100 에포크 동안 코드를 실행하고 손실 값을 얼마나 낮출 수 있는지 예측하도록 요구합니다. 마지막으로 강사는 테스트의 중요성에 대해 논의하고 테스트 코드 작성에 대한 다음 비디오를 보여줍니다.

  • 06:50:00 이 섹션에서 강사는 Google 및 문서와 같은 외부 리소스를 사용하여 새로운 주제를 연구하고 학습하는 것의 중요성에 대해 논의합니다. 그들은 학습자가 100 에포크 동안 학습 코드를 실행하고 가중치 및 편향 값과 예측을 조사하도록 권장합니다. 그런 다음 강사는 계속해서 테스트 코드와 model.eval() 함수의 목적을 설명합니다. 이 함수는 드롭아웃 및 배치 노름 레이어와 같이 테스트에 필요하지 않은 모델의 설정을 해제합니다. 또한 torch.no_grad()의 목적과 해당 단계에서 학습이 발생하지 않기 때문에 테스트 중에 그래디언트 추적을 해제하는 방법에 대해서도 논의합니다. 마지막으로 이 섹션은 테스트 모드에서 모델에 대한 정방향 전달을 작성하는 것으로 끝납니다.

  • 06:55:00 이 섹션에서는 비디오에서 테스트 예측을 만들고 PyTorch에서 모델 0을 사용하여 테스트 손실을 계산하는 방법을 설명합니다. 테스트 예측은 이전에 본 적이 없는 재료에 대한 지식을 평가하는 것처럼 모델이 이전에 본 적이 없는 테스트 데이터 세트에서 이루어집니다. 이 비디오는 좋지 않은 결과를 피하기 위해 평가하기 전에 모델이 테스트 데이터 세트를 보지 못하게 하는 것의 중요성을 설명합니다. 코드는 모델이 100 에포크 동안 훈련하는 동안 10 에포크마다 손실과 무슨 일이 일어나고 있는지 출력하고 손실은 각 에포크마다 감소하는 것으로 보입니다. 비디오는 나중에 인쇄될 수 있는 모델 정확도의 개념에 대해서도 설명합니다.

파트 8

  • 07:00:00 이 섹션에서 강사는 모델을 교육하고 간단한 데이터 세트에 대해 예측한 이전 비디오를 검토합니다. 그런 다음 모델을 더 오래 훈련하여 예측된 빨간색 점을 실제 녹색 점과 정렬하는 모델의 기능을 개선하는 방법을 찾도록 시청자에게 도전합니다. 그런 다음 강사는 100개 이상의 Epoch에 대해 코드를 다시 실행하고 모델의 테스트 손실 및 예측에서 상당한 개선을 보여줍니다. 강사는 모델을 훈련하고 평가하는 이 프로세스가 PyTorch를 사용한 딥 러닝의 기본이며 과정의 나머지 부분에서 사용될 것이라고 강조합니다. 또한 유용한 값을 저장하기 위해 빈 목록을 사용하여 모델 진행 상황을 추적하는 것의 중요성에 대해서도 논의합니다.

  • 07:05:00 이 섹션에서 강사는 손실 값을 추적하는 것이 중요한 이유와 이를 사용하여 모델의 진행 상황을 모니터링하고 향후 실험에서 개선하는 방법을 설명합니다. 제시된 코드 스니펫은 에포크 수, 현재 손실 값 및 현재 테스트 손실 값을 다른 목록에 추가하여 나중에 플롯할 수 있도록 합니다. 강사는 목록에서 생성된 손실 곡선의 플롯을 보여주고 그 중요성을 설명합니다. 이상적인 손실 곡선은 높게 시작하여 시간이 지남에 따라 감소하여 감소하는 손실 값을 나타냅니다.

  • 07:10:00 이 섹션에서 강사는 손실 값을 PyTorch에서 NumPy로 변환하여 Matplotlib에 플롯하는 방법을 설명합니다. 그는 Matplotlib이 NumPy에서만 작동하기 때문에 그것들을 NumPy로 변환하는 것이 필요하다는 것을 보여줍니다. 그는 또한 훈련 손실 및 테스트 손실 곡선을 추적하는 방법을 설명하고 어느 시점에서 밀접하게 일치하면 모델이 수렴되고 손실이 가능한 한 0에 가까워지고 있음을 의미한다고 언급합니다. 그런 다음 강사는 테스트 루프를 살펴보고 모델을 통해 테스트 데이터를 전달하고, 테스트 손실 값을 계산하고, 진행 중인 작업의 값을 추적하기 위해 교육 중에 발생하는 작업을 인쇄해야 한다고 설명합니다. 마지막으로 그는 이러한 모든 단계를 함수에 넣을 것을 제안하고 단계를 기억하기 위해 비공식 PyTorch 최적화 루프 노래를 제공합니다.

  • 07:15:00 이 섹션에서는 PyTorch에서 모델을 저장하고 로드하는 세 가지 주요 방법에 대해 알아봅니다. 첫 번째 방법인 torch.save를 사용하면 PyTorch 객체를 Python의 피클 형식으로 저장할 수 있습니다. 두 번째 방법인 torch.load를 사용하면 저장된 PyTorch 객체를 로드할 수 있습니다. 세 번째 방법인 torch.nn.module.loadStateDict를 사용하면 모델의 저장된 사전을 로드하거나 상태 사전을 저장할 수 있습니다. 다음 비디오에서 살펴보겠습니다. 이러한 방법은 특히 더 큰 모델로 작업하거나 다른 사람과 모델을 공유해야 하는 경우 모델을 저장하고 재사용하는 데 매우 중요합니다.

  • 07:20:00 이 섹션에서 강사는 상태 사전의 개념과 PyTorch에서의 중요성을 설명합니다. PyTorch는 가중치 및 편향과 같은 학습 가능한 매개변수를 포함하여 모델의 상태를 보유하는 상태 사전이라는 사전에 모델의 중요한 매개변수를 저장합니다. 강사는 torch.save 및 torch.load 메소드를 사용하여 상태 사전을 저장하여 PyTorch 모델을 저장하고 로드하는 방법을 보여줍니다. 또한 강사는 상태 사전이 아닌 전체 모델 저장의 장단점을 읽고 이해하도록 사용자에게 추가 과제를 제공합니다. 마지막으로 강사는 모델을 저장하고 모델이라는 폴더를 생성하기 위한 PyTorch 코드를 공유합니다.

  • 07:25:00 비디오의 이 섹션에서 강사는 상태 사전을 저장하는 권장 방법을 사용하여 PyTorch 모델을 저장하는 방법을 시연합니다. 모델에 이름이 지정되고 pathlib 라이브러리를 사용하여 경로가 생성됩니다. 경로가 준비되면 모델 상태 사전은 torch.save() 함수를 사용하여 저장됩니다. 여기서 첫 번째 매개변수는 객체이고 두 번째 매개변수는 모델이 저장될 경로입니다. 강사는 모델이 모델 디렉토리에 저장되었는지 여부를 확인하기 위해 LS 명령을 사용하는 방법을 보여줍니다. 비디오는 또한 저장된 모델을 로컬 컴퓨터 또는 Google 드라이브에 다운로드하는 방법을 안내합니다. 또한 강사는 뷰어가 설명서를 미리 읽고 torch.load() 함수를 사용하여 저장된 모델을 로드하는 방법을 배우도록 권장합니다.

  • 07:30:00 이 섹션에서는 강사가 PyTorch 모델을 로드하는 방법과 토치 도트 로드 방법을 사용하는 방법에 대해 설명합니다. 모델에서 이전에 저장된 클래스의 매개변수 사전은 상태 데크로 로드되며, 이 섹션에서는 선형 회귀 모델 클래스의 새 인스턴스를 생성하고 저장된 상태 데크를 여기에 로드하는 방법을 보여줍니다. 토치 nn 모듈의 로드 상태 데크 방법을 사용하면 상태 사전을 모델 인스턴스에 직접 로드할 수 있는 반면, 토치 도트 로드 방법은 F를 가져와서 이전 상태 데크가 저장된 모델의 저장 경로에 전달합니다.

  • 07:35:00 이 섹션에서는 강사가 PyTorch에서 모델을 저장하고 로드하는 과정을 진행합니다. 그들은 테스트 데이터로 새로운 예측을 만들고 등가 등호 기능을 사용하여 원래 모델의 예측과 비교하여 로드된 모델을 테스트합니다. 강사는 새로운 모델 예측 세트를 만들고 동등성을 다시 테스트하여 모델이 동등하지 않은 문제를 해결합니다. 모델 저장 및 로드의 주요 측면을 다루지만 자세한 내용은 자습서를 확인하는 것이 좋습니다. 강사는 지금까지 다룬 모든 단계를 다음 몇 개의 비디오에 통합할 계획입니다.

  • 07:40:00 비디오의 이 섹션에서 강사는 PyTorch 가져오기, 모델 저장 및 다시 로드, 장치에 구애받지 않는 코드 생성을 포함하여 PyTorch를 사용하여 딥 러닝의 전체 워크플로를 진행합니다. 사용할 수 있거나 그렇지 않은 경우 기본적으로 CPU입니다. 강사는 시청자가 잠시 멈추고 스스로 코드를 재생성하도록 권장하는 동시에 지침과 유용한 팁을 제공합니다. 이 동영상에서는 더미 데이터 세트를 만들고 데이터 포인트를 그리는 방법도 설명합니다. 이 데이터 포인트는 파란색 점에서 녹색 점을 예측하는 방법을 학습하는 모델을 구축하는 데 사용됩니다.

  • 07:45:00 이 섹션에서 강사는 y = 가중치 곱하기 특성 더하기 편향이라는 선형 회귀 공식을 사용하여 데이터를 생성하는 방법을 보여줍니다. 그들은 이러한 값을 추정하기 위해 모델을 구축하는 원칙은 동일하게 유지되고 학습 및 테스트 값을 예측하는 데 사용될 x 및 y 기능을 생성한다고 설명합니다. 또한 데이터를 교육 및 테스트 세트로 분할하고 데이터를 플롯하여 데이터의 패턴을 시각화합니다.

  • 07:50:00 이 섹션에서 강사는 주어진 선형 더미 데이터에 대해 PyTorch 선형 모델을 구축하는 개념을 소개합니다. nn.module을 하위 클래스로 만들어 선형 회귀 모델을 만들고 레이어를 사용하여 매개변수를 초기화합니다. nn.Linear 레이어는 피처를 입력 및 출력으로 취하고 선형 회귀 모델과 동일한 공식을 사용하여 들어오는 데이터에 선형 변환을 적용합니다. 모델의 입력 및 출력 모양은 데이터에 따라 다르며 강사는 코스 전체에서 입력 및 출력 기능의 다양한 예를 볼 수 있음을 강조합니다.

  • 07:55:00 이 섹션에서는 강사가 PyTorch의 선형 레이어를 기존 레이어로 사용하여 모델을 만드는 방법을 설명합니다. 선형 레이어는 선형 회귀의 한 형태입니다. y = x, 전치 더하기 b, in features, out features. nn.module을 서브클래싱하여 선형 레이어를 생성하고 미리 정의된 포워드 계산을 수행하는 선형 레이어를 통해 데이터를 전달하는 포워드 메서드를 재정의할 수 있습니다. PyTorch의 torch.nn의 힘은 뒤에서 우리를 위해 매개변수를 생성하고 수동으로 초기화할 필요가 없다는 것입니다. 또한 강사는 선형 변환, 탐색 계층, 완전 연결 계층, 조밀 계층 및 집중 흐름과 같은 선형 계층의 다양한 이름에 대해 설명합니다.

파트 9

  • 08:00:00 이 섹션에서 강사는 회선, 풀링, 패딩, 정규화, 순환, 변환기, 선형 및 드롭아웃을 포함하여 torch.nn에서 사용할 수 있는 다양한 레이어에 대해 설명합니다. 이러한 계층의 미리 빌드된 구현은 일반적인 딥 러닝 작업을 위해 PyTorch에서 제공됩니다. 그런 다음 이 섹션은 손실 및 최적화 기능을 사용하여 이전에 구축한 PyTorch 선형 모델을 교육하는 것으로 이동합니다. 옵티마이저는 모델이 얼마나 잘못되었는지를 측정하는 손실 함수를 최소화하기 위해 모델의 가중치 및 편향 매개변수를 최적화합니다. 강사는 이 작업을 위해 L1 손실 함수와 SGD 옵티마이저를 설정합니다.

  • 08:05:00 비디오의 이 섹션에서 강사는 너무 작거나 너무 큰 단계가 모델의 성능에 부정적인 영향을 미칠 수 있으므로 옵티마이저에 적합한 학습 속도를 선택하는 것의 중요성에 대해 설명합니다. 교육 루프 작성과 관련된 단계도 설명되어 있습니다. 여기에는 포워드 패스 수행, 손실 값 계산, 옵티마이저 제로화, 역전파 수행, 가중치 및 편향 조정이 포함됩니다. 또한 강사는 재현 가능한 결과를 보장하기 위해 torch.manual_seed() 사용을 제안하고 10 에포크마다 훈련 손실 및 테스트 손실을 출력하는 코드를 제공합니다.

  • 08:10:00 PyTorch 과정의 이 섹션에서 강사는 데이터에 대한 장치 독립적 코드를 작성하는 방법을 설명하고 동일한 장치에서 모든 계산을 수행하는 것이 오류를 방지하는 데 중요하다는 점을 강조합니다. 모델과 데이터는 CPU 또는 CUDA와 같은 동일한 장치에 있어야 합니다. X 트레인과 Y 트레인을 사용하여 대상 장치에 교육 및 테스트 데이터를 배치함으로써 장치에 구애받지 않는 코드를 생성하여 모델을 교육할 때 더 정확한 결과를 제공합니다. 강사는 또한 데크된 상태를 사용하여 모델을 평가하는 방법을 설명하고 추정된 매개변수가 이상적인 값에 가깝다는 것을 보여줍니다. 이 섹션은 사용자가 예측을 만들고 평가하고 원래 데이터에 플롯하는 도전 과제로 끝납니다.

  • 08:15:00 이 섹션에서 강사는 PyTorch 모델을 평가 모드로 전환하고 모델이 이전에 본 적이 없는 테스트 데이터에 대한 예측을 만드는 것의 중요성에 대해 논의합니다. 그들은 모델의 예측을 시각화하기 위해 플롯 예측 기능을 가져오지만 Matplotlib가 PyTorch가 아닌 NumPy와 함께 작동하기 때문에 CUDA 장치 유형 텐서를 NumPy로 변환하려고 할 때 유형 오류가 발생합니다. 그들은 텐서 도트 CPU를 사용하여 먼저 텐서를 호스트 메모리에 복사함으로써 이 오류를 해결합니다. 강사는 또한 뷰어가 경로 모듈을 사용하여 훈련된 모델을 저장하고 로드하도록 권장합니다. 모델 디렉터리를 만들고 여기에 모델 경로를 설정하여 시연합니다.

  • 08:20:00 이 섹션에서는 강사가 Python의 경로 lib 모듈을 사용하여 PyTorch 모델을 저장하고 로드하는 방법을 설명합니다. 먼저 PyTorch용 확장자 .PTH로 모델 저장 경로가 생성됩니다. 모델 상태 사전은 토치 저장 방법을 사용하여 저장됩니다. 강사는 상태 데크를 명시적으로 보는 것이 매개변수가 많은 모델에서는 실행 가능하지 않을 수 있다고 지적합니다. 저장된 모델을 로드하기 위해 저장된 상태 사전을 로드 상태 데크 방법을 사용하고 저장된 PyTorch 개체의 파일 경로를 전달하여 선형 회귀 모델 V2의 새 인스턴스에 로드합니다. PyTorch의 미리 빌드된 선형 계층의 사용과 이를 전달 메서드에서 호출하는 방법에 대해서도 설명합니다.

  • 08:25:00 이 섹션에서 강사는 토치 추론 모드를 사용하여 로드된 모델이 저장된 모델과 동일한 매개변수를 가지고 있는지 확인하여 마무리합니다. 그런 다음 사용자가 모델 구축, 교육, 저장에서 재사용까지 PyTorch 워크플로를 완료한 것을 축하합니다. 그런 다음 강사는 사용자가 learnpytorch.io의 책 버전 과정 자료에서 연습과 추가 커리큘럼을 찾을 수 있다고 지적합니다. 또한 섹션별로 번호가 매겨진 연습 노트북 템플릿을 제공하며 PyTorch 딥 러닝 GitHub 리포지토리의 추가 항목 및 연습에서 찾을 수 있습니다.

  • 08:30:00 이 섹션에서 강사는 워크플로 연습을 완료하고 PyTorch 과정에 대한 추가 리소스를 찾는 방법에 대한 정보를 제공합니다. 그는 예제 솔루션을 보기 전에 스스로 연습을 시도하는 것의 중요성을 강조합니다. 이 섹션은 데이터 준비, 텐서로 전환, 모델 구축 또는 선택, 손실 함수 및 옵티마이저 선택, 모델 교육, 예측 수행 및 모델 평가를 포함하는 PyTorch 워크플로에 대한 요약으로 마무리됩니다. 다음 섹션에서는 기계 학습의 가장 큰 문제 중 하나인 PyTorch를 사용한 신경망 분류에 중점을 둡니다. 강사는 과정 GitHub 토론 페이지 및 PyTorch 설명서를 포함하여 과정 전반에 걸쳐 도움을 받을 수 있는 리소스를 제공합니다. 또한 분류 문제가 무엇인지 설명하고 이메일이 스팸인지 여부를 예측하는 것과 같은 예를 제공합니다.

  • 08:35:00 PyTorch 과정의 이 섹션에서 강사는 딥 러닝에서 다양한 유형의 분류 문제에 대해 논의합니다. 이진 분류는 스팸 또는 스팸 아님과 같이 두 가지 옵션만 있는 경우입니다. 다중 클래스 분류는 이미지를 스시, 스테이크 또는 피자로 분류하는 것과 같이 두 가지 이상의 옵션이 있는 경우입니다. 다중 레이블 분류는 Wikipedia 기사에 태그를 할당하는 것과 같이 예제에 둘 이상의 레이블이 있을 수 있는 경우입니다. 강사는 실제 사례를 제공하고 개념을 철저히 설명합니다. 그는 또한 이진 분류 문제에서 개와 고양이의 이미지를 분류하고 다중 클래스 분류 문제에서 다른 동물의 이미지를 분류하는 예를 통해 이진 분류와 다중 클래스 분류를 구분합니다.

  • 08:40:00 이 섹션에서는 강사가 신경망 분류 모델의 아키텍처와 분류 모델의 입력 및 출력 형태에 대해 설명합니다. 그는 기계 학습 모델에 대한 수치 입력의 중요성을 강조하고 데이터에 따라 수치 입력이 종종 다른 형태로 나타나는 방법을 설명합니다. 또한 맞춤 및 예측을 위한 사용자 지정 데이터를 만드는 프로세스에 대해 설명하고 신경망 분류를 위한 모델링과 관련된 단계를 다룹니다. 또한 강사는 분류 모델에 대한 손실 함수 및 옵티마이저 설정, 훈련 및 평가 루프 생성, 모델 저장 및 로드, 비선형성 활용, 분류 모델 평가 방법을 설명합니다. 그는 기계 학습 알고리즘을 사용하여 음식 사진과 그 예측을 수치적으로 표현하는 방법의 예를 제공하면서 결론을 내립니다.

  • 08:45:00 이 섹션에서는 PyTorch for Deep Learning & Machine Learning 과정의 강사가 수치 인코딩 프로세스 및 출력 형식에 대해 자세히 설명합니다. 기계 학습 알고리즘에 대한 입력은 숫자로 인코딩된 이미지이며 예측 확률에 일부 관련 출력이 있습니다. 강사는 예측 확률이 1에 가까울수록 모델의 출력에 대한 확신이 더 크다는 점에 주목합니다. 이 출력은 여러 샘플을 살펴봄으로써 나오며 이러한 예측을 개선하기 위해 알고리즘과 데이터를 조정할 수 있습니다. 인코딩된 출력은 사람이 이해할 수 있는 레이블로 변경되어야 합니다. 또한 강사는 배치 크기, 색상 채널 및 높이/너비를 포함하여 텐서의 모양에 대해 설명합니다. 배치 크기는 32가 일반적이며 모양은 해결 중인 문제에 따라 달라질 수 있습니다.

  • 08:50:00 이 섹션에서 강사는 신경망이 무엇인지에 대한 도식인 분류 모델의 아키텍처를 설명합니다. 입력 레이어 모양은 수치 표현으로 인코딩해야 하는 피처의 수에 의해 결정되며 출력 레이어는 종종 특정 클래스에 대한 예측 확률입니다. 은닉층의 개수, 은닉층당 뉴런, 출력층 모양 등 사용자가 결정해야 하는 하이퍼파라미터가 있습니다. 강사는 또한 PyTorch를 사용하여 레이어와 뉴런을 생성하는 코드 예제를 제공하고 해결 중인 문제에 따라 모양이 달라질 것이라고 설명합니다.

  • 08:55:00 이 섹션에서 강사는 숨겨진 레이어 활성화, 출력 활성화, 손실 함수 및 최적화를 포함하여 분류 문제의 구성 요소에 대해 설명하고 각각의 예를 제공합니다. 그런 다음 강사는 다중 클래스 분류 문제를 소개하고 다중 출력 기능을 갖도록 아키텍처를 구축하는 방법에 대해 설명합니다. 마지막으로 강사는 Google CoLab에서 PyTorch를 사용하여 코드 작성으로 전환하여 청중에게 모든 코드가 GitHub 저장소에 저장될 것임을 상기시킵니다. 강사는 또한 데이터로 기계 학습 문제를 시작하는 것의 중요성을 강조합니다.

파트 10

  • 09:00:00 이 섹션에서 비디오는 scikit-learn 라이브러리를 사용하여 사용자 지정 데이터 세트를 만드는 데 중점을 둡니다. Make circles 데이터 세트를 가져오고 1000개의 샘플을 만들고 무작위성을 위해 약간의 노이즈를 추가했습니다. X 및 Y의 길이가 인쇄되어 1000개의 기능 및 레이블 샘플이 있음을 나타냅니다. 그런 다음 X와 Y의 처음 5개 샘플이 인쇄되어 데이터가 이미 숫자이고 이진 분류를 위한 0과 1의 두 클래스만 있음을 보여줍니다. 그런 다음 X1 및 X2로 레이블이 지정된 기능을 사용하여 pandas 데이터 프레임이 생성되고 대규모 데이터 세트를 탐색하는 데 잠재적으로 유용한 접근 방식으로 무작위 샘플링이 논의됩니다.

  • 09:05:00 과정의 이 섹션에서 강사는 이진 분류를 위해 PyTorch에서 신경망 구축을 연습하는 데 사용할 장난감 데이터 세트를 설명합니다. 데이터 세트는 scikit-learn을 사용하여 생성되었으며 이진 분류 문제의 두 클래스를 나타내는 서로 다른 색상의 두 원으로 구성됩니다. 강사는 데이터 시각화가 데이터 세트를 이해하고 신경망 구축을 준비하는 데 어떻게 도움이 되는지 보여줍니다. 문제의 입력 및 출력 모양과 데이터 세트를 교육 및 테스트 세트로 분할하는 방법도 설명합니다. 이 과정의 다음 섹션에서 다룰 것입니다.

  • 09:10:00 이 섹션에서 강사는 일반적인 오류 원인인 기계 학습에서 입력 및 출력 모양을 확인하는 것의 중요성에 대해 설명합니다. NumPy 배열을 사용하여 데이터 세트의 입력 및 출력 모양을 보고 데이터를 PyTorch 텐서로 변환하는 방법을 보여줍니다. 데이터를 텐서로 변환하고 이를 훈련 및 테스트 세트로 분할하는 프로세스는 이 예에서 사용된 것과 같은 장난감 데이터 세트의 경우에도 기계 학습에서 중요한 단계입니다. 강사는 PyTorch를 가져오는 방법과 사용 중인 버전이 1.10인지 확인하는 방법, NumPy 배열을 PyTorch 텐서로 변환하는 방법, 데이터에 대한 훈련 및 테스트 세트를 만드는 방법을 보여줍니다.

  • 09:15:00 이 섹션에서 강사는 "torch.float" 명령을 사용하여 NumPy 배열의 데이터를 PyTorch의 기본 유형인 float 32로 변환하는 방법을 보여줍니다. 그렇게 하지 않으면 나중에 오류가 발생할 수 있습니다. 그런 다음 강사는 scikit-learn의 "train_test_split" 기능을 사용하여 수행되는 임의 분할을 사용하여 데이터를 교육 및 테스트 세트로 분할하는 방법을 보여줍니다. 코드 예제는 기능과 레이블을 함수에 전달하는 동안 표시되어야 하는 순서를 보여줍니다. 강사는 또한 주어진 값이 테스트 데이터로 사용될 데이터의 백분율인 "test_size" 매개변수와 임의 시드와 같은 역할을 하는 "random_state" 매개변수의 사용에 대해 설명합니다.

  • 09:20:00 이 섹션에서는 비디오에서 PyTorch의 Scikit-learn 라이브러리를 사용하여 데이터를 교육 및 테스트 세트로 분할하는 방법을 다룹니다. 토치 도트 수동 시드는 동일한 임의 분할이 사용되도록 설정되어 비교하려는 분할과 동일한지 확인합니다. 비디오는 학습 및 테스트 세트의 길이를 사용하여 작업할 데이터 세트를 구성하는 각각 800개 및 200개의 샘플이 있다고 설명합니다. 다음 단계는 빨간색과 파란색 점을 분류할 모델을 만들고 선택하는 것입니다. 이를 달성하기 위해 가속기에서 실행되도록 장치를 포함하는 불가지론적 코드를 설정하고, 모델을 구성하고, 손실을 정의하고, PyTorch를 사용하여 다음 섹션에서 자세히 살펴볼 교육 및 테스트 루프를 만듭니다.

  • 09:25:00 이 섹션에서는 PyTorch용 GPU를 설정하고 코드가 문제 없이 CPU에서 실행되도록 장치 독립적인 코드를 생성하는 방법을 배웁니다. 그런 다음 nn.Module을 서브클래싱하여 모델을 구성하고 네 가지 주요 단계를 따릅니다. 먼저 nn.Module을 하위 클래스로 분류하는 모델을 만듭니다. 둘째, 데이터의 모양을 처리할 수 있는 두 개의 선형 레이어를 만듭니다. 셋째, 모델의 정방향 전달을 설명하는 정방향 방법을 정의합니다. 넷째, 모델 클래스의 인스턴스를 인스턴스화하여 대상 장치로 보냅니다. 우리는 모델이 신경망을 사용하여 빨간색과 파란색 원을 분리하는 데 사용된다는 것을 배웁니다.

  • 09:30:00 과정의 이 섹션에서 강사는 입력 기능을 처리할 수 있는 신경망 계층을 정의하는 방법에 대해 설명합니다. 그는 계속해서 각 레이어에 필요한 기능의 수는 사용 중인 데이터 세트에 따라 다르다고 설명합니다. X에 두 개의 기능이 있는 이 예에서 첫 번째 계층은 n개의 기능이 2인 "n-선형"으로 정의되고 두 번째 계층은 모델이 더 많은 패턴을 학습하는 데 도움이 되는 5개의 기능으로 정의됩니다. 강사는 또한 모양 불일치 오류를 방지하기 위해 두 번째 레이어의 인-피처가 이전 레이어의 아웃-피처와 일치해야 한다고 설명합니다. 마지막으로 그는 Ford 패스를 설명하고 자체 계층 2(자체 계층 1과 X를 입력으로 사용함)를 반환하는 Ford 방법을 정의합니다.

  • 09:35:00 이 섹션에서 강사는 모델 클래스의 인스턴스를 인스턴스화하고 이를 대상 장치로 보내는 방법을 설명합니다. 그는 간단한 다층 신경망을 만드는 방법을 보여줍니다. 그런 다음 TensorFlow 플레이그라운드에서 두 개의 입력 기능을 사용하고 이를 5개의 뉴런이 있는 숨겨진 계층으로 전달하여 하나의 출력 기능이 있는 다른 계층에 공급하는 방법을 보여줍니다. 그는 네트워크를 일부 데이터에 맞추고 테스트 손실은 약 50%입니다. 즉, 모델이 무작위로 추측한 경우 클래스가 두 개뿐이기 때문에 약 0.5의 손실이 발생합니다.

  • 09:40:00 비디오의 이 섹션에서 강사는 Fig Jam이라는 화이트보드 도구를 사용하여 이진 분류 문제에 대한 신경망을 시각적으로 나타냅니다. 강사는 이진 분류 문제에서 무작위로 추측하면 약 50%의 정확도를 얻을 수 있다고 설명합니다. 신경망은 입력, 은닉 유닛, 출력 레이어를 사용하여 구성되며 강사는 레이어의 모양이 일치해야 한다고 강조합니다. TensorFlow 플레이그라운드는 이러한 유형의 데이터에서 신경망을 구축할 때 자신을 탐색하고 도전할 수 있는 재미있는 방법으로 제안됩니다. 나중에 강사는 입력 기능을 처리할 수 있는 두 개의 선형 레이어를 사용하여 이전에 만든 신경망을 더 적은 코드로 복제하고 네트워크의 학습을 개선하기 위해 확장하는 방법에 대해 설명합니다.

  • 09:45:00 이 섹션에서 강사는 PyTorch에서 nn.Sequential을 사용하여 신경망 모델을 복제하는 방법을 시연합니다. nn.Sequential을 사용하면 대부분의 코드가 뒤에서 구현되므로 모델의 코드를 단순화할 수 있습니다. 강사는 비디오의 이전 섹션에서 설명한 것처럼 간단하고 직관적인 작업에 nn.Sequential을 사용하는 것이 서브클래싱보다 더 효율적일 수 있다고 설명합니다. 그러나 서브클래싱을 사용하면 더 복잡한 순방향 패스 구축과 같은 더 복잡한 작업이 가능합니다. 이 섹션에서는 PyTorch의 유연성과 모델을 만드는 다양한 방법을 강조합니다. 강사는 또한 모델을 통해 데이터를 전달하고 상태 사전을 분석하는 방법을 시연합니다.

  • 09:50:00 이 섹션에서 강사는 PyTorch가 2계층 신경망을 구현하는 동안 배후에서 자동으로 가중치 및 편향 매개변수를 생성하는 방법을 보여줍니다. 강사는 모델이 난수로 인스턴스화되고 PyTorch가 역전파 및 경사하강법 프로세스 중에 이 값을 약간 변경하여 데이터를 더 잘 맞추거나 표현한다는 사실을 강조합니다. 또한 강사는 수많은 기능이 있는 많은 레이어가 있을 때의 잠재적인 복잡성과 이러한 값을 수동으로 추적하는 것이 얼마나 장황해질 수 있는지 보여줍니다. 마지막으로 강사는 계속해서 훈련되지 않은 모델을 사용하여 예측을 수행하고 문제 해결 및 데이터 시각화의 중요성을 강조합니다.

  • 09:55:00 이 섹션에서는 딥 러닝을 위한 모델을 생성한 후 손실 함수 및 옵티마이저를 선택하는 방법을 설명합니다. 필요한 손실 함수 및 옵티마이저 유형은 일반적으로 작업 중인 데이터 세트의 특성에 따라 다릅니다. 회귀 문제의 경우 평균 절대 오차 또는 평균 제곱 오차가 적절할 수 있습니다. 한편, 분류 문제의 경우 이진 교차 엔트로피 또는 범주 교차 엔트로피를 선택할 수 있습니다. 비디오는 손실 함수가 모델의 예측이 얼마나 정확한지 측정하는 데 도움이 된다는 점을 언급하며 결론을 내립니다.

 

딥 러닝 및 기계 학습을 위한 PyTorch – 전체 과정(11-16부)


딥 러닝 및 기계 학습을 위한 PyTorch - 전체 과정


파트 11

  • 10:00:00 비디오 과정의 이 섹션에서 강사는 신경망 분류를 위해 PyTorch에서 일반적으로 사용되는 다양한 손실 함수 및 옵티마이저에 대한 개요를 제공합니다. 강사는 이진 교차 엔트로피 손실, 교차 엔트로피 손실, 평균 절대 오차 및 평균 제곱 오차에 대해 설명하고 회귀 작업과 분류 작업에 일반적으로 사용되는 항목을 설명합니다. 이진 분류 작업의 경우 제공되는 코드 예제에는 로짓이 포함된 torch.nn BCE 손실 및 BCE 손실이 포함됩니다. 또한 이 비디오는 딥 러닝의 로짓 개념을 다루고 일반적으로 사용되는 두 가지 옵티마이저인 SGD와 Adam을 살펴봅니다. 강사는 사용 가능한 다른 옵티마이저가 있을 수 있지만 이 두 가지를 고수하면 여전히 많은 문제에서 좋은 결과를 얻을 수 있다고 말합니다.

  • 10:05:00 비디오의 이 섹션에서는 연사가 딥 러닝 및 머신 러닝을 위해 PyTorch에서 손실 함수 및 옵티마이저를 설정합니다. 손실 함수는 로짓 손실이 있는 BCE라고 하며 시그모이드 활성화 함수가 내장되어 있습니다. 연사는 신경망의 활성화 함수에 대해 더 알고 싶다면 온라인 리소스를 사용할 수 있다고 설명합니다. 선택한 옵티마이저는 학습률이 0.1인 확률적 경사하강법(SGD)이며 매개변수는 손실과 관련하여 모델 매개변수를 업데이트하도록 설정됩니다. 마지막으로 화자는 평가 메트릭을 만듭니다.

  • 10:10:00 이 섹션에서 강사는 평가 메트릭으로서 정확도의 중요성에 대해 논의하고 pytorch를 사용하여 정확도 함수를 만드는 방법을 시연합니다. 정확도 함수는 예측을 실측 레이블과 비교하고 총 샘플 수에서 올바른 예측의 백분율을 반환합니다. 강사는 또한 포워드 패스, 손실 계산, 옵티마이저 제로 그래드, 역전파 및 경사 하강법을 포함하여 파이토치 훈련 루프와 관련된 단계에 대한 개요를 제공합니다. 단계가 나열되고 각 단계의 중요성이 논의됩니다.

  • 10:15:00 이 섹션에서 강사는 원시 로짓에서 예측 확률, 예측 레이블로 이동하는 방법을 설명합니다. 모델의 원시 출력은 로짓(logit)이라고 하며 이진 분류를 위한 시그모이드 및 다중 클래스 분류를 위한 소프트맥스와 같은 활성화 함수에 전달하여 예측 확률로 변환할 수 있습니다. 그런 다음 이진 분류를 위해 확률을 반올림하거나 다중 클래스 분류를 위해 argmax를 취하여 예측 확률을 예측 레이블로 변환할 수 있습니다. 강사는 또한 활성화 함수의 개념을 계층과 별개로 설명하고 선형 계층을 통과한 데이터가 내적 및 편향 항을 통해 들어오는 데이터에 선형 변환을 적용하는 방법을 보여줍니다.

  • 10:20:00 비디오의 이 섹션에서 강사는 시그모이드 활성화 함수를 사용하여 로짓이라고 하는 모델의 원시 출력을 이진 분류에 사용할 수 있는 예측 확률로 전환하는 방법을 설명합니다. 강사는 모델 로짓에서 시그모이드 함수를 사용하여 예측 레이블을 얻기 위해 토치 도트 라운드 함수에 전달될 수 있는 predprobs를 생성하는 방법을 보여줍니다. 이러한 예측 레이블은 종종 0.5로 설정되는 결정 경계를 사용하여 입력이 속하는 클래스를 결정하는 데 사용됩니다. 강사는 또한 예측 확률이 테스트 데이터와 동일한 형식이 되도록 원시 로짓에서 이 단계를 수행하는 것의 중요성을 강조합니다.

  • 10:25:00 이 섹션에서 비디오는 활성화 함수를 사용하여 모델의 원시 로짓을 예측 확률로 변환한 다음 이를 예측 레이블로 변환하는 프로세스에 대해 설명합니다. 단계는 y-pred가 예측, pred 프로브에 대한 로짓, pred 레이블에 대한 전체 단계를 사용하여 y-pred 프로브에서 생성되는 공정한 코드를 통해 시연됩니다. 모델의 예측을 테스트 레이블과 비교하고 squeeze 함수를 사용하여 동일한 형식을 만듭니다. 다음 단계는 훈련 및 테스트 루프를 구축하는 것입니다. 여기에는 포워드 패스 수행, 손실 계산 및 기울기 최적화가 포함됩니다. 이 동영상은 시청자가 다음 동영상으로 진행하여 추가 지침을 보기 전에 직접 시도해 보도록 권장합니다.

  • 10:30:00 이 섹션에서 강사는 재현성을 위한 수동 시드, 특히 CUDA 장치에서의 작업을 위한 CUDA 임의 시드를 설정합니다. 그런 다음 대상 장치에 데이터를 저장하고 교육 및 평가 루프를 구축하는 작업으로 이동합니다. 강사는 원시 로짓이 출력되고 이를 예측 확률 및 레이블로 변환하기 위해 torch.round 및 torch.sigmoid를 통과해야 하는 포워드 패스에서 약간의 정보를 강조합니다. 마지막으로 정확도를 계산할 필요는 없지만 모델이 학습하는 동안 다양한 메트릭을 시각화하는 것이 유용할 수 있다는 점을 지적하면서 손실과 정확도를 계산합니다.

  • 10:35:00 이 섹션에서는 비디오에서 BCE 손실과 PyTorch의 로짓 손실이 있는 BCE의 차이점에 대해 설명합니다. 로짓 손실이 있는 BCE는 로짓을 입력으로 예상하고 시그모이드 레이어와 BCE 손실을 결합하여 수치적으로 더 안정적입니다. 반면에 BCE 손실은 예측 확률을 입력으로 예상하므로 로짓에서 토치 시그모이드를 호출하여 확률로 변환해야 합니다. 이 비디오는 또한 그래디언트 제로화, 역전파 수행, 그래디언트 감소를 위한 매개변수 업데이트를 포함하여 PyTorch 최적화 루프의 단계를 간략하게 설명합니다. 마찬가지로 테스트하거나 예측할 때 모델을 추론 모드로 전환하고 예측 확률을 얻기 위해 시그모이드 함수를 호출하여 테스트 로짓을 처리해야 합니다.

  • 10:40:00 이 섹션에서는 강사가 분류 모델의 테스트 손실 및 정확도를 계산하는 방법에 대해 설명합니다. 테스트 손실을 계산하기 위해 강사는 로짓 손실 함수와 함께 BCE를 사용하고 Y 테스트 레이블과 비교합니다. 테스트 정확도를 계산하기 위해 강사는 Y true 및 Y pred 변수에 대한 정확도 함수를 사용합니다. 강사가 scikit-learn의 메트릭스 패키지를 기반으로 하므로 정확도 함수의 변수 순서는 반대입니다. 마지막으로 강사는 10번째 Epoch마다 Epoch 번호, 훈련 손실 및 정확도, 테스트 손실 및 정확도를 인쇄합니다. 강사는 사용자가 이 매머드 코드를 실행하고 발생하는 모든 오류를 수정하도록 권장합니다.

  • 10:45:00 이 섹션에서 강사는 이전 섹션의 모델 교육 결과에 대해 논의하지만 정확도가 크게 향상되지 않았습니다. 강사는 모델의 이상적인 정확도는 100이고 손실 값은 0이어야 한다고 제안합니다. 그러나 현재 모델의 정확도는 50% 미만으로 무작위 추측과 같습니다. 성능 저하의 원인을 파악하기 위해 강사는 모델이 만든 예측을 시각화할 것을 제안합니다. 강사는 이 시각화 과정에서 사용할 도우미 함수 파일에서 "플롯 결정 경계"라는 함수를 가져옵니다. 강사는 또한 기계 학습 기초 및 ML 작업에 대해 자세히 알아보는 데 관심이 있는 사람들을 위해 리소스 madewithml.com을 추천합니다.

  • 10:50:00 이 섹션에서 강사는 Python의 "pathlib" 및 "request" 모듈을 사용하여 프로그래밍 방식으로 PyTorch 학습 리포지토리에서 도우미 함수를 다운로드하는 방법을 설명합니다. 강사는 도우미 함수의 경로가 이미 존재하는지 확인하는 과정을 보여주고, 존재하지 않는 경우 "helper_functions.py"라는 파일로 도우미 함수를 다운로드하도록 요청합니다. 강사는 다운로드한 도우미 함수에서 "plot_predictions" 및 "plot_decision_boundary" 메서드를 성공적으로 가져오는 방법을 시연합니다. 이 함수는 과정 후반에 사용됩니다. 마지막으로 강사는 훈련 세트에 대한 결정 경계를 성공적으로 그리는 "plot_decision_boundary" 함수를 사용하여 도우미 함수를 시각화하는 테스트를 수행합니다.

  • 10:55:00 비디오의 이 섹션에서 발표자는 모델의 결정 경계의 시각화에 표시된 대로 원형 데이터를 직선으로 분리할 때 선형 모델의 한계에 대해 논의합니다. 모델의 정확도를 개선하기 위한 솔루션은 더 많은 레이어를 추가하는 것입니다. 모델의 성능을 향상시키는 다른 방법으로는 훈련 데이터의 양을 늘리고 학습률 및 배치 크기와 같은 하이퍼 매개변수를 조정하는 것이 있습니다. 외부 Python 스크립트에서 도우미 함수를 가져오고 사용하는 것도 일반적인 사례로 언급됩니다.

12부

  • 11:00:00 이 섹션에서 강사는 더 많은 은닉 유닛 추가, 더 오래 맞추기, 활성화 함수 변경, 학습 속도 조정 및 손실 함수 변경과 같이 모델을 개선하는 방법에 대해 논의합니다. 강사는 모델의 매개변수 수를 늘리면 잠재적으로 데이터를 더 잘 나타내는 데 도움이 될 수 있지만 매개변수가 너무 많으면 모델이 단순 데이터 세트에 비해 너무 복잡해질 수 있다고 지적합니다. 강사는 또한 모델의 구조와 하이퍼파라미터를 변경하여 모델을 개선하는 데 실험이 어떻게 도움이 되는지 설명합니다. 마지막으로 강사는 레이어 추가, 은닉 유닛 수 증가, 활성화 기능 추가 및 최적화 기능 변경이 잠재적으로 모델을 개선할 수 있는 방법에 대한 그래픽 예를 보여줍니다.

  • 11:05:00 이 섹션에서는 강사가 모델 관점에서 모델을 개선하는 방법에 대해 설명합니다. 그는 기계 학습 엔지니어와 데이터 과학자가 모델 결과를 개선하기 위해 변경할 수 있는 값인 하이퍼 매개변수의 개념을 설명합니다. 강사는 히든 유닛 수, 레이어 수 및 에포크 수와 같은 모델의 하이퍼 매개변수를 변경하는 방법을 시연합니다. 그는 또한 이러한 변경 사항을 한 번에 하나씩 테스트하여 어느 것이 개선 또는 저하를 제공하는지 식별하는 것이 중요하다고 강조합니다. 마지막으로 매개변수와 하이퍼 매개변수의 차이점과 이러한 구분이 중요한 이유를 설명합니다.

  • 11:10:00 이 섹션에서 강사는 더 많은 은닉 유닛이 있는 3계층 모델을 생성하여 이 모델을 더 오래 훈련하면 더 나은 결과를 얻을 수 있는지 확인합니다. 전달 방법은 추가 숨겨진 단위와 전체 추가 레이어를 사용하여 각 레이어를 통해 데이터를 전달하도록 재정의됩니다. 속도 향상을 활용하는 방법도 모든 작업을 한 번에 수행하는 방법을 시연합니다. 3계층 모델의 인스턴스가 생성되어 대상 장치로 전송된 다음 손실 함수 및 최적화 프로그램이 생성되고 모델 1에 대한 교육 및 평가 루프가 생성됩니다.

  • 11:15:00 이 섹션에서는 nn.module이 하위 클래스로 분류되어 더 많은 은닉 유닛과 추가 레이어가 있는 새로운 모델인 Circle Model V1을 생성한 이전 섹션에서 비디오가 이어집니다. 이제 워크플로우의 다음 단계는 손실 함수를 선택하는 것이며 비디오는 이전과 같이 동일한 옵티마이저인 torch.optin.SGD()와 함께 nn.BCEWithLogitsLoss()를 사용합니다. 동영상은 학습률을 0.1로, epoch 수를 1000으로 설정하고 대상 장치(CPU 또는 GPU)에 데이터를 넣습니다. 비디오는 또한 신기원을 통한 루프를 시연하고 새로운 아키텍처가 있는 모델을 통해 훈련 데이터를 전달하고 손실을 계산하며 토치의 자동 등급을 사용하여 매개변수를 업데이트합니다.

  • 11:20:00 비디오의 이 섹션에서는 강사가 모델의 정확도와 손실을 평가하는 단계를 설명합니다. 손실 함수는 예측된 레이블 값을 가져와 실제 레이블 값과 비교합니다. 정확도 함수는 모델의 예측이 얼마나 정확한지 결정하는 데 사용됩니다. 옵티마이저는 데이터를 더 잘 표현하기 위해 모델의 매개변수를 조정하는 데 사용됩니다. 테스트는 모델의 eval() 메서드를 호출하고 추론 모드를 켜서 수행됩니다. 입력 데이터를 모델에 전달하여 로짓을 생성한 다음 torch.round() 및 torch.sigmoid() 함수를 사용하여 이를 예측으로 변환합니다. 손실과 정확도는 테스트 데이터에 대해 계산되고 모델 훈련 중에 100 에포크마다 출력됩니다.

  • 11:25:00 딥 러닝 및 기계 학습을 위한 PyTorch 과정의 이 섹션에서 강사는 모델이 전혀 학습할 수 있는지 확인하기 위해 더 작은 문제를 테스트하는 것과 같이 모델이 작동하지 않을 때의 문제 해결 기술에 대해 논의합니다. 그는 선형 모델이 직선에 맞을 수 있었던 이전 섹션의 데이터 세트를 복제하고 이를 사용하여 현재 모델이 무엇이든 배울 수 있는지 확인할 것을 제안합니다. 순환 데이터. 강사는 또한 모델을 개선하는 몇 가지 방법에는 레이어 수 및 숨겨진 단위와 같은 하이퍼파라미터 변경, 활성화 및 손실 함수 변경이 포함된다고 언급합니다.

  • 11:30:00 이 섹션에서 강사는 모델이 모든 종류의 문제에서 작동하는지 확인하기 위해 선형 회귀 공식을 사용하여 데이터 세트를 생성합니다. 데이터 집합을 x 회귀라고 하며 y값당 하나의 x값 샘플 100개를 포함합니다. 그런 다음 강사는 데이터에 대한 훈련 및 테스트 분할을 생성하고 길이를 확인합니다. 마지막으로 도우미 함수 파일의 플롯 예측 함수는 데이터를 시각적으로 검사하는 데 사용됩니다.

  • 11:35:00 이 섹션에서 발표자는 비직선 데이터 세트를 맞추려고 시도하기 전에 해당 모델이 직선 데이터 세트를 맞출 수 있는지 확인하기 위해 사이드 프로젝트에 대해 논의합니다. 그들은 데이터와 일치하도록 입력 기능의 수를 2개에서 1개로 변경하여 새 데이터 세트에 맞게 모델 1을 조정하는 동시에 모델에 가능한 한 많은 매개변수를 제공하기 위해 출력 기능을 10으로 유지합니다. 또한 레이어를 통해 데이터를 전달하는 NN 도트 순차를 사용하여 모델 2를 만들고 손실 및 최적화 기능을 설정합니다.

  • 11:40:00 이 섹션에서 강사는 회귀 문제를 최적화하기 위해 L1 손실 함수를 소개하고 학습률이 0.1인 SGD 최적화 프로그램을 사용하여 모델의 매개변수를 최적화합니다. 데이터 세트를 로드하고 대상 장치에 배치한 후 모델은 루프를 사용하여 천 에포크 동안 훈련됩니다. 각 에포크에서 순방향 패스가 수행되고 손실이 계산되며 역방향 및 계단 함수를 사용하여 매개변수가 업데이트됩니다. 트레이닝 진행 상황은 100 epoch마다 epoch, loss, test loss와 함께 출력됩니다. 모델이 최적화됨에 따라 손실이 줄어듭니다.

  • 11:45:00 비디오의 이 섹션에서 강사는 직선 데이터 세트를 생성하고 이에 맞게 모델을 교육한 이전 섹션을 요약합니다. 그들은 모델이 무언가를 학습하고 있음을 확인하고 학습자가 기계 학습 모델을 실험하기 위해 다양한 학습 속도 값을 가지고 놀도록 제안합니다. 그런 다음 강사는 평가 모드를 켜고 추론이라고도 하는 예측을 수행하는 방법을 설명합니다. 그들은 또한 플롯 예측 기능을 사용하는 방법을 가르치고 데이터가 모델과 동일한 장치에 있지 않기 때문에 오류가 발생합니다. 그들은 텐서 입력에서 도트 CPU를 호출하여 해결합니다.

  • 11:50:00 이 섹션에서 강사는 머신 러닝 및 딥 러닝 모델에서 비선형성의 중요성을 소개합니다. 선형 함수만으로는 정확하게 표현하기 위해 곡선과 같은 비선형 함수가 필요한 데이터의 복잡한 패턴을 캡처할 수 없습니다. 신경망은 복잡한 데이터 패턴을 모델링하기 위해 선형 함수를 비선형 함수 또는 활성화와 결합하여 구축됩니다. 강사는 비선형 활성화와 딥 러닝 모델에서의 역할을 다룰 향후 비디오에 대해 힌트를 줍니다.

  • 11:55:00 이 섹션에서 강사는 기계 학습 및 신경망에서 비선형성의 힘에 대해 설명합니다. 데이터가 항상 직선으로 구성되는 것은 아니기 때문에 기계 학습에서 비선형성은 필수적입니다. 그런 다음 강사는 make circles 기능을 사용하여 비선형 데이터를 생성하고 플로팅하는 방법과 PyTorch 및 sklearn의 훈련 테스트 분할 기능을 사용하여 데이터를 시제로 변환하고 훈련 및 테스트 분할하는 방법을 시연합니다.

파트 13

  • 12:00:00 이 섹션에서는 PyTorch for Deep Learning & Machine Learning 과정의 강사가 모델 구축의 중요한 구성 요소인 비선형성을 소개합니다. 강사는 시청자에게 TorchNN 모듈에서 풀링 레이어, 패딩 레이어 및 입력에 대해 일부 수학적 연산을 수행하는 활성화 함수를 포함할 수 있는 특정 비선형 함수를 찾도록 요구합니다. n dot sigmoid 및 n dot relu와 같은 비선형 활성화의 예가 제공됩니다. 그런 다음 강사는 PyTorch에서 비선형성을 사용하여 분류 모델을 구축하는 방법을 시연합니다. 비선형성은 그래프가 직선이 아닌 것을 의미하고 선형은 그 반대를 의미합니다.

  • 12:05:00 딥 러닝 및 머신 러닝을 위한 PyTorch 과정의 이 섹션에서 강사는 비선형 데이터의 개념과 신경망 및 머신 러닝 모델이 수백 차원의 숫자와 함께 작동하여 쉽게 학습할 수 있도록 하는 방법을 소개합니다. 비선형 데이터를 처리합니다. 새로운 신경망인 원형 모델 V2는 "relu"라는 비선형 활성화 함수를 추가하여 선형 작업을 수행하는 생성자와 여러 계층이 있는 클래스를 사용하여 생성됩니다. 이 함수는 모델의 음수 입력을 0으로 바꾸고 양수 입력은 그대로 둡니다. 그런 다음 새 모델을 시그모이드 함수를 통해 전달하여 출력을 결정합니다.

  • 12:10:00 이 섹션에서 강사는 시청자에게 선형 활성화 함수 대신 ReLU(Rectified Linear Unit) 활성화 함수를 사용하여 2개의 숨겨진 레이어와 5개의 뉴런이 있는 TensorFlow Playground에서 신경망 모델을 재생성하도록 요구합니다. 사용하고 있습니다. 강사는 ReLU 활성화 함수가 신경망이 수행하도록 설계된 비선형 데이터 모델링에 필요한 대중적이고 효과적인 비선형 활성화 함수라고 설명합니다. 강사는 훈련 손실에 대한 학습 속도 변경 효과를 보여주고 뷰어가 손실 곡선에 미치는 영향을 관찰하기 위해 다양한 학습 속도를 실험하도록 권장합니다.

  • 12:15:00 이 섹션에서 강사는 PyTorch를 사용하여 이진 분류 문제에 대한 옵티마이저 및 손실 함수 구축에 대해 설명합니다. 그들은 모델의 비선형 활성화 기능을 ReLU로 설정하고 CUDA에 대한 무작위 시드를 생성합니다. 그런 다음 모델을 훈련하기 위해 1000 에포크를 반복하고 각각 로짓 손실 함수와 정확도 함수가 있는 BCE를 사용하여 손실과 정확도를 계산합니다. 강사는 교육 코드를 기능화하는 방법에 대해 생각하도록 권장하고 이 섹션이 실제 PyTorch 프로젝트 작업에 대한 경험과 모멘텀을 구축하는 것이라고 제안합니다.

  • 12:20:00 이 섹션에서는 강사가 PyTorch에서 역전파 방법으로 모델을 최적화하는 과정을 설명합니다. 역전파를 수행하기 전에 옵티마이저의 그래디언트가 0이 되어 깨끗한 슬레이트에서 시작할 수 있습니다. loss.backward()를 실행한 후 옵티마이저의 단계 메서드를 호출하여 모델 매개변수에 대한 경사 하강법을 수행합니다. 강사는 또한 모델의 매개변수를 디버깅하는 방법을 시연하고 ReLU 활성화 함수에는 매개변수가 없으므로 효과적이라고 설명합니다. 마지막으로 강사는 모델의 학습 진행 상황을 추적하기 위해 교육 및 테스트 손실, 정확도 및 에포크를 인쇄합니다.

  • 12:25:00 이 섹션에서 강사는 PyTorch 코드의 모양 문제를 해결하고 스퀴즈 기능을 사용하여 테스트 로짓 점 모양에서 추가 차원을 제거하여 문제를 해결합니다. 그런 다음 비선형성의 힘과 relu 레이어 추가로 모델의 성능이 어떻게 향상되어 잠재적으로 데이터 세트의 원을 분리하는 선을 그릴 수 있는지에 대해 논의합니다. 강사는 또한 모델을 평가하고 예측할 때 시각화의 중요성을 강조하고 시청자에게 결정 경계를 플로팅하도록 요구합니다.

  • 12:30:00 이 섹션에서 강사는 플롯 결정 경계 함수를 사용하여 선형 모델과 비교하여 비선형 모델의 성능을 시각화하는 방법을 보여줍니다. 비선형 모델은 선형 모델보다 정확도가 더 좋은 것으로 나타났지만 강사는 시청자에게 정확도를 훨씬 더 향상시키라고 요구합니다. 그런 다음 강사는 신경망이 데이터에서 패턴을 발견하기 위한 도구로 선형 및 비선형 함수를 사용하는 방법에 대해 논의하고 PyTorch에서 텐서를 생성하고 비선형 활성화 함수를 사용하는 방법을 시연합니다.

  • 12:35:00 이 섹션에서 강사는 널리 사용되는 ReLU 및 Sigmoid 함수를 복제하여 PyTorch에서 사용자 정의 활성화 함수를 생성하는 방법을 설명합니다. 강사는 먼저 토치 플로트(32)의 데이터 유형을 설정하고 x축에 음의 10~10 값을 사용하여 플로팅된 직선을 시각화합니다. ReLU 함수는 입력 텐서를 취하고 0과 x의 최대값을 반환함으로써 torch.relu 및 nn.relu 함수를 사용하여 생성됩니다. 유사하게 Sigmoid 함수는 입력 텐서를 취하고 1을 1로 나눈 값에 음수 x의 지수를 더한 값을 반환하여 생성됩니다. 강사는 맞춤형 ReLU 및 Sigmoid 함수를 플로팅하고 PyTorch 내장 함수와 비교하여 효율성을 보여줍니다.

  • 12:40:00 PyTorch 과정의 이 섹션에서 강사는 데이터 세트에 맞추기 위해 데이터에서 패턴을 찾기 위해 선형 및 비선형 함수를 결합하는 것의 중요성을 설명합니다. 신경망의 기본 아이디어는 이러한 기능의 계층을 쌓아 모델을 만드는 것입니다. 이러한 계층을 처음부터 구축하는 것이 가능하지만 Pytorch는 오류 테스트를 거친 사전 구축된 계층을 제공하고 GPU 사용을 허용하면서 배후에서 가능한 한 빠르게 계산합니다. 또한 강사는 두 가지 가능한 결과를 포함하는 이진 분류와 두 가지 이상의 가능한 결과를 포함하는 다중 클래스 분류 간의 차이점에 대해 설명합니다. 마지막으로 이 섹션은 신경망에서 비선형성의 중요성을 반복하면서 결론을 내리고 강사는 이전 이진 분류 모델을 개선하기 위한 과제를 제시합니다.

  • 12:45:00 이 섹션에서는 코스 강사가 다중 클래스 분류와 이진 분류의 차이점을 소개합니다. 시그모이드 대신 소프트맥스 활성화 함수를 사용하고 이진 교차 엔트로피 대신 교차 엔트로피를 사용합니다. 그런 다음 강사는 scikit-learn.datasets의 make blobs 함수를 사용하여 20개의 다중 클래스 데이터 세트를 생성하여 각각 2개의 기능이 있는 4개의 클래스를 생성합니다. 중심 표준 편차는 클러스터에 약간의 무작위성을 부여하고 클러스터를 약간 흔들어서 모델을 조금 더 어렵게 만들기 위해 조정됩니다.

  • 12:50:00 이 섹션에서는 스크립트 발췌문에서 PyTorch를 사용하여 다중 클래스 분류 모델을 위한 데이터를 준비하는 방법에 대해 설명합니다. 그들은 데이터를 텐서로 바꾸고 scikit-learn의 훈련 테스트 분할 기능을 사용하여 데이터를 훈련 및 테스트 세트로 분할합니다. 또한 plot.figure를 사용하여 데이터를 시각화하고 재현성을 보장하기 위해 무작위 시드를 설정합니다. 다중 클래스 분류 데이터 세트를 만든 후 데이터를 분리하는 데 비선형성이 필요한지 여부를 고려한 다음 데이터에 대한 모델 구축을 진행합니다.

  • 12:55:00 이 섹션에서는 강사가 PyTorch를 사용하여 다중 클래스 분류 모델을 설정하는 방법에 대해 설명합니다. 그는 입력 레이어 모양을 정의하고 숨겨진 레이어당 뉴런 수를 결정하는 것부터 시작하여 프로세스를 단계별로 설명합니다. 그런 다음 강사는 클래스당 하나의 출력 피처가 필요한 출력 레이어 모양을 설정하는 방법을 설명합니다. 모델을 만들기 위해 강사는 nn.module에서 상속하고 모델에 대한 일부 매개 변수를 설정하는 "blob 모델"이라는 클래스를 만듭니다. 마지막으로 강사는 입력 기능과 출력 기능을 사용하여 다중 클래스 분류 모델을 초기화하는 방법을 보여줍니다.

14부

  • 13:00:00 이 섹션에서 강사는 PyTorch의 nn.Sequential 방법을 사용하여 선형 레이어 스택 모델을 만드는 방법에 대해 설명합니다. 모델을 인스턴스화하기 위해 숨겨진 계층의 구성을 결정하기 위해 입력 기능의 수와 출력 클래스의 수에 액세스합니다. 강사는 각 레이어를 통해 데이터를 하나씩 전달하기 위해 순차적인 레이어 스택을 설정합니다. 또한 데이터 세트에 비선형성을 추가하는 방법에 대한 지침을 제공한 다음 입력이 지정된 레이어를 순차적으로 통과할 수 있도록 전달 방법을 만듭니다. 마지막으로 Blob 모델의 인스턴스가 적절한 수의 입력 및 출력 기능으로 생성됩니다.

  • 13:05:00 비디오의 이 섹션에서 강사는 nn.Module을 서브클래스화하여 다중 클래스 분류 모델을 생성하고 클래스 생성자에 대한 매개변수를 설정하여 입력 및 출력 기능을 사용자 정의합니다. 또한 출력 기능 매개변수가 데이터의 클래스 수와 일치한다고 설명합니다. 다중 클래스 분류 모델에 대한 손실 함수를 생성하기 위해 강사는 입력과 대상 간의 손실을 계산하고 C 클래스로 분류 문제를 교육할 때 유용한 torch.nn 모듈에서 교차 엔트로피 손실을 검색하고 찾습니다. 강사는 또한 가중치 매개변수가 불균형 훈련 세트를 다룰 때 유용하다고 설명합니다.

  • 13:10:00 이 섹션에서 강사는 다중 클래스 분류를 위한 손실 함수 및 옵티마이저 생성에 대해 설명합니다. 그는 두 가지 일반적인 옵티마이저인 SGD와 Adam을 권장하지만 이 예에서는 SGD를 사용하도록 선택합니다. 그런 다음 그는 시청자에게 이전 비디오에서 만든 모델로 순방향 패스를 수행하고 모델의 원시 출력이 무엇인지 고려하도록 요청합니다. 또한 강사는 텐서가 동일한 기기에 있지 않으면 런타임 오류가 발생할 수 있으므로 시청자에게 기기 매개변수에 주의를 기울일 것을 상기시킵니다. 마지막으로 그는 모델을 평가 모드로 전환하고 몇 가지 예측을 합니다.

  • 13:15:00 이 섹션에서 강사는 모델의 출력 로짓을 다중 클래스 분류 문제에 대한 예측 확률 및 예측 레이블로 변환하는 방법을 설명합니다. 이를 위해 softmax 함수를 사용하여 로짓을 예측 확률로 변환한 다음 확률이 가장 높은 예측을 예측 레이블로 간주합니다. 강사는 PyTorch 코드를 사용하여 이 프로세스를 시연하고 softmax 함수의 특성으로 인해 각 샘플에 대한 확률의 합이 항상 1이 된다는 점에 주목합니다.

  • 13:20:00 이 섹션에서 강사는 다중 클래스 분류 문제에 대한 PyTorch 모델의 원시 출력에서 소프트맥스 활성화 함수를 사용하여 확률을 예측한 다음 다음의 argmax를 취하여 예측 레이블로 이동하는 방법을 설명합니다. 예측 확률. 이 프로세스에는 모델의 원시 출력을 로짓으로 변환하고 softmax 함수를 사용하여 예측 확률을 얻고 이러한 확률의 argmax를 가져와 예측 레이블을 얻는 작업이 포함됩니다. 강사는 모델이 아직 훈련되지 않았기 때문에 현재 예측이 무작위이지만 이러한 단계는 훈련 루프에서 모델을 훈련하고 평가하는 데 사용된다는 점에 주목합니다.

  • 13:25:00 이 섹션에서 강사는 다중 클래스 모델에 대한 교육 및 테스트 루프를 구축하기 시작합니다. 첫째, 그들은 매번 동일한 출력을 얻기 위해 수동 시드를 설정하지만 이것이 보장되지는 않는다는 점에 유의하십시오. 그런 다음 에포크 수를 100으로 설정하고 데이터를 대상 장치에 넣습니다. 루프 스루 데이터가 시작되고 각 에포크에 대해 모델은 순방향 패스와 x 블롭 트레인에서 생성된 로짓으로 학습됩니다. Torch softmax 함수의 출력은 교차 엔트로피 손실 및 정확도로 손실을 계산하는 데 사용됩니다. 그런 다음 옵티마이저가 0이 되고 옵티마이저가 진행되기 전에 역전파가 수행됩니다. 모델을 평가 모드로 설정하는 것과 관련된 테스트 또는 추론을 위한 코드도 제공됩니다.

  • 13:30:00 이 섹션에서 강사는 드롭아웃 레이어, 매치 표준 끄기, 예측을 더 빠르게 하기 위한 토치 추론 모드에 대해 설명합니다. 그들은 훈련 중에 드롭아웃 레이어가 과적합을 피하기 위해 일부 뉴런을 무작위로 드롭아웃한다고 설명합니다. 강사는 또한 배후에서 테스트 손실 및 테스트 레이블을 전달하여 테스트 로짓 및 테스트 정확도를 계산하는 방법을 시연합니다. 그런 다음 런타임 오류를 일으킨 성가신 데이터 유형 문제와 이를 해결한 방법에 대해 논의합니다. 강사는 문제 해결 코드가 기계 학습의 필수 부분이며 오류를 식별하고 해결하는 데 시간이 걸린다고 강조합니다.

  • 13:35:00 이 섹션에서 내레이터는 다중 클래스 분류 모델을 만드는 동안 다양한 문제 해결 문제에 직면합니다. 먼저 그는 코드의 오류가 잘못된 데이터 유형을 가진 텐서 중 하나 때문에 발생했음을 알아냅니다. 약간의 연구와 실험을 통해 그는 텐서를 교차 엔트로피 손실에 대한 계산을 최적화하는 "torch.long 텐서"로 변경합니다. 나중에 훈련 데이터와 테스트 데이터의 크기가 다르기 때문에 또 다른 오류가 발생합니다. 즉석에서 코드를 디버깅하여 문제를 식별하고 데이터를 재할당합니다. 이러한 문제에도 불구하고 모델의 정확도와 손실은 예상대로 수행되어 모델이 다중 클래스 분류 데이터 세트에 대해 작동하고 있음을 나타냅니다.

  • 13:40:00 이 섹션에서 강사는 학습된 다중 클래스 분류 모델을 예측하고 평가하여 평가하는 방법에 대해 설명합니다. 강사는 모델을 평가 모드로 설정하고 테스트 데이터를 전달하고 결과로 원시 로짓을 얻은 후에 예측이 이루어진다고 설명합니다. 다음 단계는 로짓에서 torch.softmax를 호출하여 로짓을 예측 확률로 변환하는 것입니다. 그런 다음 예측 확률에 대해 torch.argmax를 호출하여 예측 레이블을 얻습니다. 강사는 예측을 플로팅하고 실제 데이터와 비교하여 시각화하는 것의 중요성을 강조합니다.

  • 13:45:00 이 섹션에서 강사는 다중 클래스 분류 모델을 시각적으로 평가하고 데이터를 분리하는 데 사용되는 선형 및 비선형 함수를 탐색합니다. 또한 강사는 대부분의 데이터가 분류를 위해 선형 및 비선형 함수를 모두 필요로 하며 PyTorch를 사용하면 이러한 함수를 모델에 쉽게 추가할 수 있다고 언급합니다. 또한 이 섹션에서는 모델 평가의 중요성을 다루고 값의 양이 다른 클래스를 처리할 때 중요한 메트릭으로 정밀도와 재현율을 소개합니다.

  • 13:50:00 이 섹션에서 강사는 정확도, 정밀성, 재현율, F1 점수, 혼란 매트릭스 및 분류 보고서를 포함한 다양한 분류 평가 방법에 대해 설명합니다. 강사는 정확도가 분류 문제에 대한 기본 메트릭이지만 불균형 데이터 세트에는 최선이 아닐 수 있다고 설명합니다. 불균형 데이터 세트의 경우 정밀도와 재현율을 사용해야 합니다. 정밀도는 참 긍정에 대한 참 긍정과 거짓 긍정에 의해 결정되는 반면 재현율은 참 긍정과 거짓 부정에 대한 참 긍정에 의해 결정됩니다. 강사는 또한 정밀도와 재현율 사이의 상충관계에 주목합니다. 여기서 한 측정항목을 높이면 다른 측정항목이 낮아집니다. 분류 메트릭에 대한 torchmetrics 및 scikit-learn 라이브러리의 사용에 대해서도 설명합니다.

  • 13:55:00 이 섹션에서 강사는 torchmetrics 패키지를 사용하여 PyTorch에서 미리 빌드된 메트릭 함수를 가져오고 사용하는 방법을 보여줍니다. 토치 메트릭을 설치하고, 정확도 메트릭을 가져오고, 다중 클래스 모델의 정확도를 계산하는 데 사용하는 방법을 보여줍니다. 그러나 그들은 또한 torchmetrics를 사용할 때 장치에 구애받지 않는 코드를 사용하여 메트릭이 데이터와 동일한 장치에 있어야 한다고 경고합니다. 강사는 추가 탐색을 위해 torchmetrics 모듈 및 과외 기사에 대한 링크를 제공합니다. 또한 이전 섹션에서 다룬 코드를 연습하기 위한 연습과 솔루션을 소개합니다.

파트 15

  • 14:00:00 이 섹션에서 강사는 시청자에게 코드 따라가기, Google Colab의 문서 문자열 기능 사용, Stack Overflow 또는 PyTorch 문서에서 코드 검색, PyTorch 딥 러닝 저장소의 토론 탭에서 질문하기. 이 섹션에서는 기계 학습 모델이 다양한 이미지 예에서 패턴을 학습하여 이미지가 스테이크인지 피자인지 확인하거나 이미지를 여러 범주로 분류하는 이진 또는 다중 클래스 분류 문제와 같은 컴퓨터 비전 문제의 예도 다룹니다. .

  • 14:05:00 이 섹션에서는 연사가 이미지 문제에 대한 다중 클래스 분류, 객체 감지 및 이미지 분할과 같은 기계 학습을 사용하는 컴퓨터 비전의 다양한 응용 프로그램에 대해 논의합니다. 연사는 머신 러닝을 사용하여 업로드된 이미지에서 최대 100개의 서로 다른 음식을 분류하는 Nutrify의 예를 제공합니다. 연사는 또한 Tesla가 컴퓨터 비전을 사용하여 3차원 벡터 공간 및 머신 러닝을 사용하여 자율 주행 자동차의 움직임을 계획하는 방법에 대해서도 설명합니다. 화자는 Tesla가 과정에서 가르치는 것과 동일한 코드인 PyTorch를 사용한다고 언급합니다.

  • 14:10:00 비디오의 이 섹션에서 강사는 PyTorch를 사용하여 다중 클래스 이미지 분류를 위한 컴퓨터 비전 모델을 만드는 방법에 대해 설명합니다. 음식 사진 인식 기술인 Nutrify의 예를 사용하여 강사는 컴퓨터 비전 문제에 대한 일반적인 입력 및 출력을 설명합니다. 입력에는 이미지의 높이, 너비 및 색상 채널을 나타내는 텐서가 포함됩니다. 강사는 또한 널리 사용되는 컴퓨터 비전 문제에 대한 기존 알고리즘이 이미 존재할 수 있지만 필요한 경우 구축할 수 있다고 언급합니다. Nutrify 예제에 대해 원하는 출력은 세 개의 출력이며, 각 식품 클래스에 대해 하나씩입니다.

  • 14:15:00 이 섹션에서는 기계 학습 모델이 이미지 분류에 어떻게 사용될 수 있는지 설명합니다. PyTorch와 컨볼루션 신경망(CNN)을 활용하여 정보를 숫자로 표현하고 모델이 데이터의 패턴을 인식하도록 훈련시킵니다. 주어진 예는 PyTorch를 사용하여 정보를 인코딩하고 CNN을 사용하여 이미지의 패턴을 인식하여 스시, 스테이크, 피자와 같은 이미지의 음식 유형을 예측하는 것입니다. 비디오는 입력 및 출력 모양이 해결되는 문제에 따라 달라지며 다른 모델을 사용할 수 있지만 일반적으로 CNN이 이미지 데이터에 가장 적합한 선택임을 강조합니다. 마지막으로 비디오는 이 섹션에서 학습한 동일한 원칙을 추가로 설명하는 데 사용될 패션 아이템의 그레이스케일 이미지와 관련된 문제를 소개합니다.

  • 14:20:00 이 섹션에서 강사는 PyTorch 및 기타 딥 러닝 라이브러리의 이미지 데이터 표현에 대해 논의합니다. 이러한 라이브러리는 종종 색상 채널이 마지막이라고 예상하지만 PyTorch는 기본적으로 색상 채널이 있는 이미지 데이터를 먼저 나타냅니다. 비디오는 주어진 문제에 대한 모델의 입력 및 출력 모양을 정렬하는 것의 중요성을 설명합니다. 강사는 변환 및 데이터 로더를 사용하여 데이터 준비, 사전 훈련된 모델 빌드 또는 선택, 옵티마이저 및 손실 함수 선택, 메트릭을 사용하여 모델 평가, 개선을 위한 실험을 포함하여 모델 빌드를 위한 PyTorch 워크플로우에 대한 개요를 제공합니다. 모델. 다음 섹션에서는 컨볼루션 신경망(CNN)의 아키텍처에 대해 설명합니다.

  • 14:25:00 이 섹션에서 강사는 일반적인 CNN(컨볼루션 신경망)의 아키텍처에 대해 설명합니다. 입력 데이터는 클래스 이름으로 변환할 수 있는 출력 모양으로 변환될 때까지 컨볼루션, 활성화 및 풀링 레이어를 포함한 다양한 레이어를 거칩니다. 강사는 CNN을 쌓는 방법에는 거의 무제한이 있음을 강조하고 슬라이드를 통해 한 가지 방법을 보여줍니다. 그러나 학습하는 가장 좋은 방법은 코딩하는 것이며 강사는 사용자에게 PyTorch 및 TorchVision 라이브러리를 사용하여 CNN 구축을 연습할 수 있는 Google Colab 노트북으로 안내합니다. 또한 강사는 참조 노트북과 LearnPyTorch.io의 PyTorch 컴퓨터 비전 섹션을 비롯한 추가 리소스를 제공합니다.

  • 14:30:00 비디오의 이 섹션에서 강사는 컴퓨터 비전에서 PyTorch의 강점을 강조하면서 다양한 도메인에 대한 다양한 PyTorch 라이브러리를 소개합니다. 컴퓨터 비전을 위한 주요 라이브러리는 데이터 세트, 컴퓨터 비전을 위한 사전 훈련된 모델, 머신 러닝 모델에서 사용할 수 있는 숫자로 비전 데이터를 조작하기 위한 변환을 포함하는 토치 비전입니다. 강사는 PyTorch, NN 및 토치 비전 가져오기를 시연하고 일반적인 이미지 변환을 포함하고 작성을 사용하여 함께 훈련할 수 있는 변환 모듈을 안내합니다. to_tensor 함수는 이미지 데이터를 텐서 형식으로 변환하기 위한 주요 변환으로 도입되었습니다.

  • 14:35:00 딥 러닝 및 기계 학습을 위한 PyTorch 과정의 이 섹션에서 강사는 TorchVision, TorchVision에서 파생된 모듈, 기본 데이터 세트인 TorchUtils.data.dataset를 포함하여 PyTorch의 기본 컴퓨터 비전 라이브러리를 다룹니다. PyTorch용 클래스. 강사는 또한 시각화를 위해 Matplotlib를 사용하는 것의 중요성과 모델과 함께 사용하기 위해 이미지를 텐서로 변환해야 하는 필요성에 대해 논의합니다. 그런 다음 강사는 의류 조각의 회색조 이미지를 특징으로 하는 원래 MNIST 데이터베이스를 변형한 FashionMNIST 데이터 세트를 소개합니다. 이 데이터 세트는 컴퓨터 비전 기술을 시연하는 데 사용됩니다. 강사는 진지한 기계 학습 연구자들이 MNIST가 현대 컴퓨터 비전 작업을 대표하지 않고 과도하게 사용된다고 생각하지만 FashionMNIST는 시작하기에 유용한 데이터 세트라고 설명합니다.

  • 14:40:00 이 섹션에서는 강사가 TorchVision 라이브러리에서 데이터 세트를 다운로드하고 사용하는 방법에 대해 설명합니다. 그들은 Caltech101, CIFAR-100 및 CIFAR-10과 같은 다양한 이미지 분류 데이터 세트와 torchvision.datasets 모듈을 사용하여 다운로드하는 방법을 언급합니다. 그런 다음 강사는 계속해서 Fashion-MNIST 데이터 세트를 다운로드하고 사용하는 방법을 시연하며 데이터 세트에 적용할 수 있는 다양한 매개변수 및 변환을 설명합니다. 또한 교육 및 테스트 데이터 세트를 모두 다운로드할 수 있는 샘플 코드를 제공합니다.

  • 14:45:00 이 섹션에서 강사는 PyTorch의 torchvision.datasets를 사용하여 예제 컴퓨터 비전 데이터 세트, 특히 FashionMNIST 데이터 세트를 다운로드하는 방법을 설명합니다. 데이터를 "data"라는 변수에 저장하고 torchvision.transforms를 사용하여 이미지 데이터를 텐서로 변환할 수 있습니다. 또한 강사는 훈련 및 테스트 데이터 세트의 길이를 확인하고, 훈련 예제의 이미지와 레이블을 보고, ".classes" 및 ".class_to_idx"와 같은 속성을 사용하여 클래스 이름에 대한 추가 정보를 얻는 방법을 시연합니다. 마지막으로 레이블은 정수이기 때문에 모양이 없다고 설명합니다.

  • 14:50:00 이 섹션에서 강사는 다양한 의류 유형의 그레이스케일 이미지로 구성된 Fashion MNIST 데이터 세트의 입력 및 출력 모양에 대해 설명합니다. 이미지의 입력 모양은 NCHW 형식이며 배치 크기는 "없음"으로 설정되고 출력 모양은 10입니다. 강사는 데이터를 더 잘 이해하기 위해 Matplotlib를 사용하여 이미지와 그 모양을 시각화하지만 데이터 형식이 예상 형식과 일치하지 않기 때문에 오류가 발생했습니다. 이 섹션에서는 기계 학습 모델로 작업할 때 입력 및 출력 모양과 형식을 이해하는 것이 중요하다는 점을 강조합니다.

  • 14:55:00 이 섹션에서는 비디오에서 PyTorch 및 Matplotlib를 사용하여 이미지 데이터를 플롯하고 시각화하는 방법을 살펴봅니다. 강사는 image.squeeze()를 사용하여 단일 이미지를 플로팅하고 추가 차원을 제거하는 방법을 보여줍니다. 다음으로 고정 랜덤 시드와 Matplotlib의 서브플롯 기능을 사용하여 데이터 세트에서 16개의 랜덤 이미지 세트를 플로팅합니다. 강사는 cmap 속성 또는 매개변수를 사용하여 플롯의 컬러 맵을 회색조로 변경하는 방법도 보여줍니다. 그런 다음 데이터를 더 잘 이해하고 데이터 세트에서 풀오버와 셔츠 간의 유사성과 같은 잠재적인 문제를 식별하기 위해 데이터 세트를 시각적으로 탐색하는 것의 중요성에 대해 논의합니다.

파트 16

  • 15:00:00 이 섹션에서 강사는 컴퓨터 비전 모델을 위한 데이터 준비의 중요성과 PyTorch 데이터 세트 및 데이터 로더를 사용하여 이를 수행하는 방법을 설명합니다. 그는 또한 60,000개의 의류 이미지를 10개의 다른 클래스로 분류할 때 비선형성의 잠재적 필요성과 데이터 세트를 더 작은 배치로 분할하여 계산 효율성을 개선할 수 있는 방법에 대해 논의합니다. 이 준비의 목표는 모델에서 데이터의 패턴을 식별하는 데 사용할 수 있는 Python iterable을 만드는 것입니다.

  • 15:05:00 이 섹션에서 강사는 60,000개의 이미지 데이터 세트를 32개의 배치로 나누는 것부터 시작하여 미니 배치의 개념과 이것이 딥 러닝에서 일반적으로 사용되는 이유를 설명합니다. 미니 배치를 사용하는 두 가지 주요 이유는 다음과 같습니다. GPU 메모리 제한을 피하고 신경망이 에포크당 기울기를 업데이트할 수 있는 더 많은 기회를 제공하여 신경망의 계산 효율성을 높입니다. 네트워크가 데이터 순서를 기억하지 않도록 데이터 세트를 전달하고, 배치 크기를 정의하고, shuffle을 true로 설정하여 torch.utils.data의 데이터 로더를 사용하여 데이터를 일괄 처리합니다. 강사는 훈련 루프에서 사용될 훈련 및 테스트 데이터 로더를 생성하는 코드를 제공합니다.

  • 15:10:00 이 섹션에서는 딥 러닝 문제에서 미니 배치의 중요성을 강조하고 PyTorch를 사용하여 학습 및 테스트 데이터 로더를 만드는 과정을 설명합니다. 배치 크기 하이퍼파라미터는 32로 설정되고 데이터 세트는 반복 가능한 것으로 바뀝니다. 훈련 및 테스트 데이터 세트는 DataLoader를 사용하여 로드되며, 훈련 데이터 및 테스트 데이터에 대해 배치 크기가 32로 설정되고 셔플이 훈련 데이터에 대해 True, 테스트 데이터에 대해 False로 설정됩니다. 배치 크기 및 데이터 세트와 같은 열차 데이터 로더의 속성을 탐색합니다. 훈련 데이터 로더와 테스트 데이터 로더의 길이는 각각의 배치 수를 결정하기 위해 인쇄됩니다.

  • 15:15:00 이 섹션에서 강사는 PyTorch를 사용하여 이미지 배치를 시각화하는 방법에 대해 설명합니다. 성적표 발췌는 배치 크기 및 훈련 샘플 수에 따라 훈련 데이터 로더의 길이가 결정되는 방법을 보여줍니다. 그런 다음 강사는 임의성을 사용하여 배치에서 단일 이미지를 시각화하는 방법을 보여주고 해당 샘플과 관련된 이미지 크기 및 레이블을 확인합니다. 강사는 이러한 입력 및 출력 형태가 특정 문제에 따라 달라지지만 기본 전제는 동일하게 유지된다는 점을 강조합니다. 즉, 데이터를 배치로 변환하여 모델에 전달합니다.

  • 15:20:00 이 섹션에서는 비디오 강사가 이미지를 일괄적으로 시각화하고 데이터를 데이터 로더로 전환하는 방법을 설명합니다. 그들은 또한 시작점으로 사용되는 기본 모델의 개념을 도입했으며 나중에 실험을 통해 개선할 수 있는 간단한 모델입니다. 그런 다음 강사는 순차와 함께 사용하기 위해 연속 범위의 dims를 텐서로 평면화하는 새 레이어 "평평화"를 소개하고 이를 독립 실행형 모델로 사용하는 방법을 보여줍니다.

  • 15:25:00 이 섹션에서는 평면화와 다차원 데이터를 단일 벡터로 변환하는 데 사용되는 방법에 대해 알아봅니다. 평면화 전후의 모양을 인쇄한 후 출력이 이제 길이가 1784인 1차원 벡터임을 알 수 있습니다. 또한 이 프로세스는 딥 러닝 모델에 사용하기 위해 Tesla 카메라의 정보 인코딩과 유사합니다. 그런 다음 평면화된 데이터가 PyTorch 모델의 선형 계층에서 어떻게 사용되는지 확인합니다. 모델은 nn.Sequential을 사용하여 정의되며 평탄화 계층과 두 개의 선형 계층을 포함합니다. 입력 및 출력 모양이 정의되고 첫 번째 선형 레이어의 출력 기능이 두 번째 선형 레이어의 기능과 일치하는 것을 볼 수 있습니다.

  • 15:30:00 이 섹션에서는 강사가 PyTorch를 사용하여 간단한 신경망 모델을 만드는 방법을 설명합니다. 이 모델은 평탄화 레이어와 비선형성이 없는 두 개의 선형 레이어로 구성됩니다. 모델의 전달 방법은 입력을 받아 평면화 계층을 통과한 다음 두 개의 선형 계층을 통과하고 출력을 반환하는 방식으로 정의됩니다. 그런 다음 강사는 모델의 인스턴스를 설정하고 더미 포워드 패스를 수행하여 모델이 예상대로 작동하는지 확인합니다. 또한 각 레이어의 입력 및 출력 모양과 원하는 출력 모양을 얻기 위해 배열하는 방법도 설명합니다. 마지막으로 평면화 레이어 사용의 중요성과 이전 레이어의 출력을 단일 벡터로 결합해야 하는 이유를 보여줍니다.

  • 15:35:00 이 섹션에서 강사는 컴퓨터 비전 문제에 대한 모델 제로를 생성한 이전 비디오를 검토하고 입력 및 출력 모양이 필요한 위치에 정렬되도록 하는 것이 중요함을 반복했습니다. 그들은 또한 가중치와 편향 행렬이 이미지의 다양한 기능을 나타내며 모델이 딥 러닝과 머신 러닝을 통해 학습할 것이라고 설명합니다. 앞으로 나아가 모델에 대한 손실 함수, 옵티마이저 및 평가 메트릭의 선택, 교차 엔트로피 손실, 확률적 경사 하강 최적화 및 정확도 평가 메트릭을 각각 선택하는 방법에 대해 논의합니다. 또한 분류 평가 메트릭에 대한 온라인 PyTorch 리소스에 대한 참조를 제공합니다.

  • 15:40:00 이 섹션에서는 비디오 강사가 Python 기계 학습 프로젝트에서 도우미 함수를 사용하는 개념에 대해 설명합니다. 그는 정확도라는 도우미 함수를 포함하여 일반적인 함수가 포함된 Python 스크립트를 가져오기 위한 샘플 코드를 제공합니다. 정확도 함수는 정확도 메트릭을 계산하고 강사는 문서 문자열을 확인하여 성공적으로 가져올 수 있음을 보여줍니다. 그는 또한 Python 프로젝트에서 도우미 함수를 사용하면 특히 매번 다시 작성할 필요가 없는 공통 기능을 처리할 때 많은 시간과 노력을 절약할 수 있다고 설명합니다. 마지막으로 그는 nn dot 교차 엔트로피 손실과 같은 손실 함수와 모델을 훈련하기 위한 옵티마이저를 설정합니다.

  • 15:45:00 이 섹션에서 강사는 확률적 경사 하강법에 대한 최적화 프로그램을 설정하고 28x28 이미지의 단순 데이터 세트에 대해 상대적으로 높은 학습률인 0.1을 설정합니다. 그런 다음 모델의 성능과 런타임을 추적하는 것의 중요성에 대해 논의합니다. 둘 사이에는 종종 절충점이 있기 때문입니다. 계속해서 Python의 time 모듈을 사용하고 torch.device를 전달하여 모델이 다른 장치에서 실행되는 속도를 비교하는 함수를 생성하여 모델 훈련 시간을 측정하는 방법을 시연합니다.

  • 15:50:00 이 섹션에서 강사는 모델 학습에 걸리는 시간을 측정하기 위한 타이밍 함수의 중요성에 대해 설명합니다. 그는 Python "타이머" 모듈을 사용하여 타이머를 생성하는 방법과 이를 교육 프로세스에 통합하는 방법을 보여줍니다. 또한 강사는 Google Colab의 재연결 기능을 사용하는 방법을 설명하고 데이터 로더를 사용하여 교육을 위해 데이터를 배치로 분할하는 방법에 대해 상기시킵니다. 그런 다음 교육 루프 생성 및 데이터 배치에 대한 모델 교육과 관련된 단계를 설명하고, 에포크 및 배치를 반복하고, 교육 단계를 수행하고, 배치당 열차 손실을 계산해야 할 필요성을 강조합니다. 마지막으로 그는 모델이 교육과 동일한 단계에서 평가될 것이라고 언급합니다.

  • 15:55:00 이 섹션에서 강사는 교육 루프가 통과한 에포크 수를 나타내는 진행률 표시줄에 대한 TQDM을 가져와서 테스트 단계를 시작합니다. TQDM은 오버헤드가 적고 오픈 소스 소프트웨어인 Python 진행률 표시줄입니다. TQDM은 매우 대중적이기 때문에 Google CoLab에 내장되어 있습니다. 강사는 시드를 설정하고 더 많은 실험을 실행하기 위한 더 빠른 교육 시간을 위해 에포크 수를 3으로 설정하기 전에 타이머를 시작합니다. 훈련 및 테스트 루프를 생성하고, 훈련 손실을 인스턴스화하고, 에포크당 훈련 손실을 계산합니다. 데이터가 일괄 처리되고 교육 일괄 데이터를 반복하는 루프가 추가됩니다.

 

딥 러닝 및 머신 러닝을 위한 PyTorch – 전체 과정(17-22부 설명)


딥 러닝 및 기계 학습을 위한 PyTorch - 전체 과정


파트 17

  • 16:00:00 이 섹션에서 강사는 신경망에 대한 훈련 루프를 설정합니다. 모델을 학습 모드로 전환하고 손실을 계산하기 위해 순방향 패스를 수행합니다. 학습 손실 값은 배치마다 누적되며 옵티마이저는 에포크당 한 번이 아니라 배치당 한 번 업데이트됩니다. 강사는 또한 모니터링 목적으로 조사한 샘플과 에포크당 배치당 평균 훈련 손실을 인쇄합니다. 이 루프는 열차 데이터 로더에서 모든 배치가 처리될 때까지 계속됩니다.

  • 16:05:00 이 섹션에서 강사는 PyTorch의 테스트 루프에 대한 코드를 안내합니다. 여기에는 테스트 손실 변수를 설정하고 순방향 패스를 사용하여 교육 데이터에서 학습된 패턴을 평가하는 작업이 포함됩니다. 테스트에 대한 정확도도 다운로드한 정확도 함수를 사용하여 계산하며 테스트 손실과 테스트 정확도 값을 배치별로 누적한 다음 배치 수로 나누어 에포크당 평균을 찾습니다. 이 값은 모델의 진행 상황을 추적하기 위해 출력됩니다.

  • 16:10:00 이 섹션에서 강사는 열차 손실, 테스트 손실 및 테스트 정확도 인쇄와 교육 시간 계산을 포함하는 교육 루프 설정의 최종 단계에 대해 설명합니다. 또한 PyTorch에서 코딩하는 동안 발생할 수 있는 잠재적인 오류에 대한 문제 해결 팁도 제공합니다. 그들은 코드를 실행하는 방법을 시연하고 교육 루프의 진행률 표시줄을 보여줌으로써 결론을 내립니다.

  • 16:15:00 이 섹션에서 강사는 교육 루프의 결과에 대해 논의하고 기본 정확도 및 교육 시간에 대한 아이디어를 소개합니다. 그는 기계 학습과 사용된 하드웨어의 고유한 임의성으로 인해 숫자가 약간 다를 수 있다고 강조합니다. 그런 다음 강사는 여러 모델을 구축하고 나중에 결과를 비교하는 함수를 만들어 모델을 평가합니다. 이 함수는 모델, 데이터 로더, 손실 함수 및 정확도 함수를 가져오고 데이터 로더에서 예측한 모델의 결과가 포함된 사전을 반환합니다. 그는 이 기능이 테스트 루프와 유사하지만 여러 모델 및 데이터 로더와 함께 사용하도록 기능화되어 있다고 설명합니다. 또한 강사는 다음 섹션에서 GPU 및 컨볼루션 신경망에서 모델을 예측하고 평가하는 방법을 다룰 것이라고 언급합니다.

  • 16:20:00 이 섹션에서는 비디오 제작자가 모든 모델 및 데이터 로더와 함께 사용할 수 있도록 손실 및 정확도 함수를 일반화하는 방법을 보여줍니다. 배치당 손실 및 정확도 값을 누적하고 배치당 평균 손실/정확도를 찾기 위해 크기를 조정하고 결과를 사전 형식으로 반환하는 방법을 보여줍니다. 또한 이전에 정의된 함수를 사용하여 테스트 데이터 세트에서 모델의 결과를 계산하는 새 함수를 만드는 방법을 보여줍니다. 마지막으로 진행률 표시줄을 사용하여 테스트 데이터 세트에서 모델의 성능을 추적합니다.

  • 16:25:00 딥 러닝 및 기계 학습을 위한 PyTorch 과정의 이 섹션에서 강사는 CPU와 GPU 모두에서 모델을 교육하기 위해 장치에 구애받지 않는 코드를 설정하는 방법에 대해 설명합니다. CUDA의 가용성을 확인하고 처리 능력을 활용하기 위해 GPU로 전환하는 방법을 시연합니다. 또한 강사는 복잡성과 크기를 늘리기 전에 더 작은 데이터 세트와 모델로 시작할 것을 권장합니다. 마지막으로 그들은 데이터 세트에 대한 새로운 모델을 구축하고 GPU에서 실행되는 동안 비선형성 유무에 관계없이 성능을 테스트할 것을 제안합니다.

  • 16:30:00 이 섹션에서 강사는 신경망의 비선형성 개념을 소개하고 시청자에게 비선형 함수로 모델을 만들어 실험해 보도록 권장합니다. 비선형 데이터 모델링을 위한 비선형성의 이점에 대해 논의하고 강사는 PyTorch를 사용하여 선형 및 비선형 레이어가 모두 있는 신경망을 구현하는 방법을 설명합니다. 코드를 단계별로 살펴보고 주어진 데이터 세트에 대한 최상의 모델을 찾는 실험의 중요성을 강조합니다.

  • 16:35:00 이 섹션에서 강사는 선형 및 비선형 함수를 사용하여 신경망을 사용자 지정하는 방법에 대해 설명하고 이전에 정의된 네트워크에 두 개의 ReLU 활성화 함수를 추가하는 방법을 보여줍니다. 입력이 레이어 스택을 통과할 수 있도록 전달 방법이 재정의되고 모델이 장치에서 인스턴스화됩니다. 그런 다음 비디오는 비선형 레이어를 추가한 새 모델에 대한 손실 함수, 옵티마이저 및 평가 메트릭을 생성하는 것으로 이동하여 다양한 함수가 신경망에 어떻게 영향을 미칠 수 있는지 이해하기 위해 실험을 실행하는 것의 중요성을 강조합니다.

  • 16:40:00 이 섹션에서 발표자는 도우미 기능을 만들고 PyTorch에서 교육 및 평가 루프를 기능화하는 방법에 대해 설명합니다. 정확도 함수 가져오기 및 손실 함수 설정 및 옵티마이저에 대해 언급합니다. 다음 단계는 오류 위험 없이 반복적으로 호출할 수 있도록 교육 및 평가 루프를 함수로 구축하는 것입니다. 발표자는 모델, 데이터 로더, 손실 함수, 옵티마이저 및 선택적으로 정확도 함수 및 대상 장치를 입력으로 필요로 하는 기차 단계 함수를 생성하는 과정을 안내합니다. 학습 단계 함수는 데이터 로더를 통해 루프를 돌고 정방향 패스를 수행하고 손실을 계산하고 역전파하고 옵티마이저로 모델 매개변수를 업데이트합니다.

  • 16:45:00 이 섹션에서는 발표자가 PyTorch에서 학습 단계를 수행하는 방법을 설명합니다. 모델, 데이터 로더, 손실 함수, 옵티마이저 및 장치를 포함하여 함수의 입력을 정의하는 것으로 시작합니다. 그런 다음 데이터 로더를 통한 루프부터 시작하여 대상 장치에 데이터를 넣는 함수의 각 라인을 살펴봅니다. 또한 배치당 정확도 점수를 누적하는 정확도 기능을 추가합니다. 마지막으로 훈련 단계가 끝나면 배치당 평균 손실과 정확도를 계산하고 결과를 출력합니다. 전반적으로 이 섹션에서는 딥 러닝 및 머신 러닝에 PyTorch를 사용하는 방법에 대한 명확하고 간결한 설명을 제공합니다.

  • 16:50:00 이 섹션에서 트레이너는 모델, 데이터 로더, 손실 함수, 정확도 함수 및 장치를 입력으로 사용하는 테스트 단계 함수를 생성하여 테스트 루프를 기능화합니다. 강사는 테스트 손실 및 정확도를 설정하는 방법과 데이터 로더를 반복하고 정방향 통과를 수행하기 전에 모델을 평가 모드로 전환하는 방법을 보여줍니다. 트레이너는 또한 추론 모드 컨텍스트 관리자를 사용하고 장치에 구애받지 않는 코드를 생성하는 것의 중요성을 설명합니다. 테스트 pred는 X를 전달하여 계산되며 테스트 손실 및 정확도는 각 기능을 사용하여 배치당 누적됩니다. 마지막으로 트레이너는 argmax를 취하여 출력 로짓을 예측 레이블로 변환합니다.

  • 16:55:00 PyTorch 전체 과정의 이 섹션에서 강사는 학습 단계 및 테스트 단계 함수를 사용하여 테스트 단계 함수와 최적화 및 평가 루프를 만드는 방법을 시연합니다. 새로운 기능은 모델을 훈련하고 세 에포크에 대한 정확도를 평가하는 데 사용됩니다. 강사는 모델이 GPU와 CPU에서 실행되는 데 걸리는 시간을 측정하는 방법도 보여줍니다.

18부

  • 17:00:00 이 섹션에서 강사는 딥 러닝 모델에 대한 테스트 단계를 설정하고 교육 시간을 측정하기 위한 타이머를 만드는 과정을 안내합니다. 코드는 향후 프로젝트에서 재사용할 수 있도록 설계되었기 때문에 간단하고 효율적입니다. 또한 두 번째 모델링 실험을 실행하고 비선형 레이어를 사용한 첫 번째 모델과 결과를 비교합니다. 두 번째 모델이 교육 시간 측면에서 약간 더 빨랐지만 이전 모델보다 더 나은 결과를 생성하지 않았습니다. 즉, 귀하의 수치는 강사의 수치와 동일하지 않을 수 있지만 방향은 상당히 유사해야 합니다. 마지막으로 강사는 모델이 너무 복잡하지 않고 데이터 세트가 그리 크지 않기 때문에 CPU와 GPU 교육 시간이 크게 다르지 않은 이유를 설명할 수 있습니다.

  • 17:05:00 이 섹션에서 강사는 때때로 모델이 GPU보다 CPU에서 더 빠르게 학습한다고 설명합니다. 이에 대한 두 가지 주된 이유는 데이터/모델을 GPU로 복사하거나 GPU로부터 복사하는 오버헤드가 GPU가 제공하는 컴퓨팅 이점을 능가하고 사용 중인 하드웨어가 컴퓨팅 기능 측면에서 GPU보다 CPU가 더 우수하기 때문입니다. 그러나 강사는 이것이 덜 일반적이며 일반적으로 최신 GPU가 일반 CPU보다 딥 러닝 알고리즘을 계산하는 데 더 빠르다고 지적합니다. 다음으로 강사는 무엇보다도 대역폭과 오버헤드 비용을 최적화하여 딥 러닝을 더 빠르게 진행하는 방법에 대해 설명하는 리소스를 공유합니다. 마지막으로 강사는 나중에 모델링 결과를 비교하기 위해 모델 1에 대한 결과 사전을 만듭니다.

  • 17:10:00 이 섹션에서 강사는 데이터와 모델 간의 장치 불일치와 관련하여 딥 러닝 모델에서 발생할 수 있는 일반적인 오류에 대해 설명합니다. 그는 데이터와 모델이 다른 장치에 있기 때문에 오류가 발생했다고 설명하고 코드를 장치에 구애받지 않게 만들어 수정을 제안합니다. 그는 또한 장치에 구애받지 않는 코드를 만드는 것이 항상 더 낫다고 경고합니다. 마지막으로 강사는 컨볼루션 신경망(CNN) 구축과 관련된 다음 모델링 실험을 소개하고 일반적인 CNN의 아키텍처를 설명합니다.

  • 17:15:00 이 섹션에서 강사는 간단한 컨볼루션 신경망(CNN)의 다양한 유형의 레이어를 설명합니다. CNN은 이미지에 대한 빨강, 녹색 및 파랑의 텐서로 전처리된 입력으로 시작합니다. 그런 다음 입력은 컨볼루션 계층, relu 계층 및 풀링 계층의 조합을 통과합니다. 딥 러닝 모델은 데이터에서 더 많은 패턴을 찾기 위해 더 많은 계층을 추가할 수 있으며, 각 계층은 데이터에 대해 서로 다른 수학적 연산 조합을 수행합니다. 강사는 CNN 설명자 웹 사이트를 사용하여 CNN을 시연합니다. 여기서 다양한 이미지의 입력이 여러 레이어를 통과하며 최종 출력은 가장 높은 값을 가진 클래스입니다.

  • 17:20:00 이 섹션에서는 강사가 컨볼루션 신경망의 작동 방식과 딥 러닝의 아름다움에 대해 설명합니다. 네트워크의 각 계층은 데이터의 다양한 기능을 학습하도록 설계되었으며, 네트워크 자체는 이러한 기능을 학습하는 가장 좋은 방법을 파악합니다. 그런 다음 강사는 컨볼루션 신경망에 대해 자세히 알아보기 위한 리소스로 CNN 설명자 웹 사이트를 소개하지만
    PyTorch 코드에서 신경망 복제에 참여하는 학습자. 그런 다음 강사는 PyTorch에서 작은 VGG 컨볼루션 신경망을 구축하고 연구 논문 작성자가 나중에 참조하기 쉽도록 새로운 모델 아키텍처의 이름을 지정한다고 설명합니다. 코드는 PyTorch 모델을 구축할 때 일반적인 매개변수인 입력 형태, 숨겨진 단위 및 출력 형태로 초기화됩니다.

  • 17:25:00 이 섹션에서는 강사가 종종 컨볼루션 블록이라고 하는 PyTorch의 블록을 사용하여 신경망을 만드는 방법을 설명합니다. 이러한 블록은 여러 레이어로 구성되며 전체 아키텍처는 여러 블록으로 구성됩니다. 강사는 인/아웃 채널, 커널 크기, 보폭 및 패딩과 같은 하이퍼파라미터가 있는 레이어의 두 가지 예를 작성하여 컨볼루션 블록을 생성하는 방법을 보여줍니다. 또한 강사는 학습자가 하이퍼파라미터의 기본 사항을 이해할 수 있도록 대화형 리소스를 제공하고 이를 살펴보도록 권장합니다.

  • 17:30:00 이 섹션에서는 강사가 PyTorch를 사용하여 딥 러닝 모델을 구축하기 위한 코드를 살펴보며 특히 컨볼루션 블록 레이어에 중점을 둡니다. 이 모델은 2D 이미지 데이터를 가져오고 레이어는 입력 데이터의 압축된 표현을 학습하는 데 사용되며 최대 풀링은 입력 데이터의 최대값을 사용합니다. 코드는 두 개의 블록으로 분할된 다음 출력 레이어가 추가됩니다. 최종 레이어의 입력은 최종 출력을 생성하기 위해 마지막 선형 레이어를 통과하기 전에 평면화됩니다.

  • 17:35:00 이 섹션에서 강사는 특징 추출기 역할을 하는 두 개의 층과 이러한 특징을 대상 클래스로 분류하는 최종 층이 있는 tiny VGG라는 CNN(컨볼루션 신경망)용 분류자 층을 구축합니다. 강사는 순차를 사용하여 분류자 계층을 코딩하고 이전 두 계층의 출력을 단일 특징 벡터로 평탄화하기 위해 평탄화 계층을 전달합니다. 그런 다음 기능 벡터는 nn.linear 레이어로 전달되어 숨겨진 단위 수를 기반으로 기능을 계산하고 클래스의 길이를 기반으로 기능을 계산합니다. 마지막으로 강사는 정방향 방법을 설정하고 각 레이어의 모양 변화를 추적하기 위해 X 점 모양을 인쇄합니다. 강사는 흑백 이미지에 대한 하나의 색상 채널만 있는 CNN 모델에 대한 입력 모양을 설정하고 각 레이어에 대한 숨겨진 단위 값을 설정하고 모델을 인스턴스화하여 완료합니다.

  • 17:40:00 비디오의 이 섹션에서 강사는 이전 섹션에서 작성한 코드를 통해 PyTorch를 사용하여 컨볼루션 신경망을 생성합니다. 그들은 코드의 일부 오타를 식별하고 수정하며 maxpool2d 계층에 학습 가능한 매개변수가 없다고 설명합니다. 그런 다음 conv2d 레이어를 소개하고 가중치 텐서와 바이어스 값이 입력을 조작하여 출력을 생성한다고 설명합니다. 그들은 PyTorch에서 더미 입력을 사용하여 CNN 설명자 웹 사이트의 첫 번째 레이어를 재현하는 방법을 보여주고 추가 읽기를 위해 PyTorch 문서에 대한 링크를 제공합니다. 또한 먼저 색상 채널이 있는 PyTorch 스타일을 사용하여 배치 이미지를 만드는 방법을 보여줍니다.

  • 17:45:00 이 섹션에서 비디오 자습서는 PyTorch 모델의 구성과 컨볼루션이 실제로 어떻게 작동하는지 살펴봅니다. 강사는 난수로 구성된 모델이 comp2d 레이어를 사용하여 데이터를 가장 잘 표현하도록 이러한 레이어를 조정하는 방법을 설명합니다. 이 레이어 중 하나를 통해 임의의 데이터를 전달한 후 자습서는 커널 크기와 컨볼루션에서 수행되는 작업을 결정하는 방법에 대해 자세히 설명합니다. 강사는 이 커널이 올바른 출력을 제공하기 위해 작업을 올바르게 수행할 수 있도록 하는 컨볼루션 계층의 목적에 대해 자세히 설명합니다.

  • 17:50:00 이 섹션에서 강사는 PyTorch의 컨볼루션 레이어에서 보폭 및 패딩 값을 변경하는 효과를 설명합니다. stride 값이 1이면 컨볼루션이 한 번에 한 픽셀씩 건너뛰고, stride 값이 2이면 한 번에 두 픽셀씩 건너뛰어 출력 크기가 줄어듭니다. 한편, 이미지 가장자리에 패딩을 추가하면 커널이 가장자리의 이미지 정보에 대해 작업할 수 있습니다. 또한 강사는 다른 매개변수에 어떤 값을 설정할지 확신이 서지 않는 경우 기존 값을 복사하고 필요에 따라 조정하는 것이 일반적이라고 지적합니다. 이 섹션은 테스트 이미지에 배치 차원을 추가하고 PyTorch의 컨볼루션 레이어를 통해 전달하는 방법에 대한 데모로 마무리됩니다.

  • 17:55:00 이 섹션에서는 비디오에서 심층 학습 및 기계 학습을 위한 PyTorch의 컨볼루션 및 최대 풀링 계층을 다룹니다. 이 비디오는 PyTorch를 사용하여 컨볼루션 레이어를 통해 테스트 이미지를 전달하여 출력을 생성함으로써 컨볼루션 레이어를 만드는 방법을 보여줍니다. 커널 크기, 보폭 및 패딩 값을 사용하여 사용자는 출력 크기가 어떻게 변경되는지 관찰할 수 있습니다. 이 비디오는 또한 최대 풀링 계층을 다루고 커널 크기가 2인 샘플 최대 풀링 계층을 생성하는 방법을 보여줍니다.

파트 19

  • 18:00:00 이 섹션에서 강사는 PyTorch에서 컨볼루션 레이어와 최대 풀 레이어를 통해 데이터를 전달하는 방법을 시연합니다. 먼저 테스트 이미지를 conv 레이어를 통과한 다음 모양을 인쇄하는 것으로 시작합니다. 그런 다음 conv 레이어의 출력을 최대 풀 레이어를 통해 전달하고 결과 모양을 다시 인쇄합니다. 강사는 max pool layer가 일정 범위의 내부 텐서의 최대값을 취하고 convolutional layer의 출력 크기를 줄인다고 설명합니다. 또한 레이어 및 매개변수의 값이 변경되면 모양이 어떻게 변경되는지 보여줍니다.

  • 18:05:00 이 섹션에서는 강사가 Convolutional Neural Networks(CNN)에서 Max Pooling의 개념을 설명합니다. 목표는 입력 데이터를 향후 예측에 사용할 수 있는 더 작은 특징 벡터로 압축하는 것입니다. 최대 풀링은 해당 영역에서 가장 중요한 기능을 결정하기 위해 입력 데이터의 특정 섹션의 최대값을 취하는 것을 포함합니다. 강사는 최대 풀링에 대한 커널 크기의 변화와 기능 공간에 미치는 영향을 시연합니다. 또한 더 작은 무작위 텐서를 사용하여 최대 풀링 프로세스를 보여주는 시각적 예를 제공합니다. 전반적으로 최대 풀링은 예측을 위한 중요한 기능을 유지하면서 데이터 차원을 줄이는 데 유용한 기술입니다.

  • 18:10:00 코스의 이 섹션에서 강사는 컨볼루션 신경망에서 최대 풀 레이어의 목적에 대해 논의합니다. 즉, 컨볼루션 레이어에서 학습된 기능을 더 작은 공간으로 압축하여 궁극적으로 압축된 표현으로 이어집니다. 예측에 사용할 수 있는 입력 데이터의 강사는 또한 시청자에게 더미 텐서를 생성하고 이전 비디오에서 구성한 작은 VGG 네트워크를 통해 전달하여 더미 텐서가 컨볼루션 블록을 통해 이동할 때 모양에 어떤 일이 발생하는지 확인하도록 합니다. 마지막으로 강사는 다른 곳에서 모델을 복제하고 데이터를 전달하는 목적이 딥 러닝에서 일반적인 관행이라고 설명합니다.

  • 18:15:00 이 섹션에서 강사는 PyTorch에서 정방향 패스의 예를 제공하고 모양 불일치 오류를 처리하는 방법을 보여줍니다. 그들은 Fashion MNIST 데이터 세트에서 이전에 생성된 이미지를 사용하고 이미지와 동일한 모양의 텐서를 생성합니다. 그러나 배치 크기에 대한 추가 차원이 있는 텐서로 인해 오류가 발생합니다. 이 문제를 해결하기 위해 차원 0에서 텐서를 풀고 배치 차원을 추가합니다. 또한 텐서가 모델과 동일한 장치에 있는지 확인하고 모델의 여러 계층에 필요한 모양을 찾고 문제를 해결하는 방법을 보여줍니다. 이 섹션은 강사가 모양에 대해 수집된 정보를 사용하여 모델을 다시 만드는 것으로 끝납니다.

  • 18:20:00 비디오의 이 섹션에서 강사는 신경망 모델의 레이어 모양을 디버깅하는 트릭을 시연합니다. 모델을 통해 더미 데이터를 전달하고 각 레이어에서 출력의 모양을 인쇄함으로써 강사는 모양 불일치가 발생하는 위치를 확인하고 분류기 레이어의 문제를 식별할 수 있습니다. 그런 다음 강사는 컨볼루션 레이어의 입력 및 출력 모양을 직접 계산하는 방법을 보여주고 코드를 사용하여 이러한 계산을 수행할 때의 이점도 주장합니다. 마지막으로 강사는 트릭을 사용하여 모델이 행렬 곱셈 규칙과 호환되는지 확인하고 모델이 원하는 모양으로 데이터를 처리할 수 있는지 확인합니다.

  • 18:25:00 이 섹션에서 강사는 자신이 구축한 모델의 각 레이어의 입력 및 출력 모양에 대해 설명합니다. 그들은 모델을 통해 무작위 텐서를 전달하고 데이터 세트에 10개의 클래스가 있으므로 1과 10의 출력 형태를 얻습니다. 그런 다음 두 번째 모델에 대한 손실 함수 및 옵티마이저 설정으로 이동하고 첫 번째 CNN(컨볼루션 신경망)을 교육하는 방법을 설명합니다. 정확도 함수를 가져오고, 교차 엔트로피 손실 함수를 설정하고, 옵티마이저를 이전과 동일하게 유지합니다(SGD의 torch.opt). 그런 다음 훈련 단계 및 테스트 단계 기능을 사용하여 모델 2를 훈련하는 방법을 보여줍니다. 다음 비디오에서 자세히 다룰 것입니다. 마지막으로 모델로 학습 단계를 수행하고 데이터 로더에서 학습을 시도하여 학습 및 테스트 기능을 설정합니다.

  • 18:30:00 이 섹션에서 비디오는 컨벌루션 신경망 훈련에 초점을 맞추고 진행 상황을 측정하기 위해 TQDM을 사용하여 훈련하는 데 걸리는 시간을 측정합니다. 그들은 정확도 함수, 손실 함수, 옵티마이저, 열차 데이터 로더 및 테스트 데이터 로더를 설정합니다. 또한 종료 시간을 측정하여 코드를 실행하는 데 걸린 시간을 알 수 있습니다. 출력물에 코드 문제가 있었지만 이를 수정하고 첫 번째 CNN을 성공적으로 교육하여 약 42초 만에 88.5%의 테스트 정확도를 달성했습니다. 비디오는 더 나은 성능의 모델이 일반적으로 훈련하는 데 더 오래 걸린다는 것을 인식하도록 조언합니다.

  • 18:35:00 이 섹션에서 강사는 기계 학습 실험에서 여러 모델에 걸쳐 결과와 교육 시간을 비교하는 것의 중요성에 대해 논의합니다. 세 가지 모델 결과 사전을 소개하고 pandas를 사용하여 데이터 프레임을 만들어 각 모델의 정확도, 손실 및 교육 시간을 비교합니다. 그들은 컨볼루션 신경망(모델 2)이 88%의 정확도로 다른 모델보다 뛰어난 성능을 보였고 시청자가 향상된 결과를 위해 다양한 모델 아키텍처, 하이퍼파라미터 및 훈련 시간을 실험하도록 권장했습니다. 강사는 실제 적용에서 모델 성능과 속도 사이의 균형을 고려하는 것의 중요성을 강조합니다.

  • 18:40:00 이 섹션에서 강사는 데이터 프레임과 그래프를 사용하여 이전 섹션에서 수행한 세 가지 실험의 결과를 비교하는 것에 대해 설명합니다. 훈련 시간과 정확도는 각 모델에 대해 비교되며 강사는 훈련 시간이 사용된 하드웨어에 따라 달라질 수 있음을 언급합니다. 가장 성능이 좋은 모델은 컨볼루션 신경망이지만 학습 시간이 가장 깁니다. 강사는 가장 성능이 좋은 모델을 사용하여 테스트 데이터 세트의 무작위 샘플에 대해 예측을 시도할 것을 제안합니다.

  • 18:45:00 이 섹션에서 강사는 훈련된 기계 학습 모델을 평가하기 위해 "예측하기"라는 함수를 만드는 방법에 대해 설명합니다. 이 함수는 토치 및 종료 모듈 유형 모델, 일부 데이터 및 장치 유형을 받습니다. 목표는 테스트 데이터 세트에서 무작위 샘플을 가져와 모델을 사용하여 예측하고 예측을 시각화하는 것입니다. 이 함수는 샘플을 압축 해제하고 대상 장치로 전달하여 샘플을 준비합니다. 그런 다음 원시 로짓을 얻기 위해 모델을 순방향 전달하고 예측 확률을 얻기 위해 소프트맥스 활성화 함수를 적용합니다. 마지막으로 예측 확률은 예측 레이블로 변환되고 특정 샘플과 관련된 예측 확률 목록이 스택되어 목록을 텐서로 변환합니다. 이 섹션은 테스트 샘플을 사용하여 작동 중인 기능의 데모로 끝납니다.

  • 18:50:00 이 섹션에서 강사는 테스트 데이터를 무작위로 샘플링하고 테스트 레이블을 만들어 모델의 예측을 평가하는 방법을 설명합니다. 테스트 데이터는 아직 데이터 로더로 변환되지 않았으며 코드는 9개의 무작위 테스트 데이터 샘플을 샘플링합니다. 강사는 모델의 성능을 이해하기 위해 모델을 교육한 후에도 무작위 테스트 데이터 샘플에 대한 예측의 중요성을 강조합니다. 강사는 또한 argmax를 사용하여 확률에서 가장 높은 값의 인덱스를 사용하여 예측 확률을 예측 레이블로 변환하는 방법에 대해 설명합니다.

  • 18:55:00 이 섹션에서 강사는 무작위 샘플에 대한 예측 및 이미지를 구성하는 코드를 작성합니다. 이 코드는 3개의 행과 3개의 열이 있는 Matplotlib 그림을 생성하고 테스트 샘플의 각 샘플을 통해 열거합니다. 각 샘플에 대해 서브플롯이 생성되고 대상 이미지가 플롯됩니다. 예측 레이블과 진리 레이블도 찾아 클래스 이름과 pred 클래스 및 테스트 레이블 인덱스를 사용하여 텍스트 형식으로 변환합니다. 마지막으로 플롯에 대한 제목이 생성되고 예측 레이블이 진리 레이블과 같으면 제목 텍스트의 색상이 녹색으로, 같지 않으면 빨간색으로 변경됩니다.

파트 20

  • 19:00:00 이 섹션에서 발표자는 기계 학습 모델 예측 시각화의 중요성에 대해 논의하고 테스트 데이터 세트에서 무작위로 선택된 샘플에 훈련된 CNN(컨볼루션 신경망)의 예측을 플로팅하는 방법을 보여줍니다. 발표자는 예측 및 실제 레이블로 이미지를 구성하고 예측이 올바른지 여부에 따라 제목 텍스트의 색상을 변경하는 방법을 보여줍니다. 발표자는 예측을 분석하여 레이블 클래스 간의 잠재적 혼란을 보여주고 예측을 시각화하면 레이블 또는 모델 자체를 개선할 수 있는 통찰력을 제공할 수 있음을 제안합니다. 그런 다음 발표자는 대규모 테스트 샘플 세트의 예측 레이블과 실제 레이블을 비교하여 모델 성능을 평가하는 또 다른 방법으로 혼동 행렬의 개념을 소개합니다.

  • 19:05:00 이 섹션에서는 강사가 PyTorch의 혼동 행렬을 사용하여 다중 클래스 분류 모델을 평가하는 방법에 대해 설명합니다. 혼동 행렬은 다양한 클래스에서 모델의 성능을 보여주는 시각적 표현입니다. 강사는 평가 메트릭에 토치 메트릭을 사용하는 방법을 설명하고 혼동 매트릭스 평가 메트릭에 액세스하는 방법을 보여줍니다. 또한 ML 확장은 혼동 행렬을 그리는 데 사용됩니다. 중요한 것은 강사가 Google Colab에 필요한 ML 확장 버전이 없으며 패키지를 올바르게 설치하려면 버전 0.19.0이 필요하다고 설명합니다. 마지막으로 비디오는 테스트 데이터 세트에서 예측을 수행하는 방법과 토치 추론 모드를 컨텍스트 관리자로 사용하여 모델을 평가 모드로 설정하는 방법을 보여줍니다.

  • 19:10:00 이 섹션에서 강사는 테스트 데이터 로더를 반복하여 PyTorch를 사용하여 예측하는 방법을 시연합니다. 예측은 목록에 추가된 다음 torch.cat을 사용하여 텐서에 연결됩니다. 결과 텐서에는 테스트 샘플당 하나의 예측이 있습니다. 강사는 또한 토치 메트릭을 설치하고 이를 가져오기 위해 시도 및 수락 루프를 사용하는 방법을 보여줍니다. 마지막으로, ML 확장의 필수 버전은 플롯 혼란 행렬 함수에서 사용하기 위한 assert 문을 사용하여 확인됩니다.

  • 19:15:00 이 섹션에서는 강사가 토치 메트릭 설치 및 ML 확장을 버전 0.19.0 이상으로 업그레이드하는 예를 사용하여 Google Colab에서 패키지를 설치 및 업그레이드하는 방법을 설명합니다. 강사는 코드를 살펴보며 설치가 잘 되었는지 확인하는 방법과 필요한 경우 런타임을 다시 시작하는 방법을 포함하여 프로세스 중에 오류가 발생하면 어떻게 해야 하는지 설명합니다. 설치가 완료되면 강사는 이전 비디오에서 전체 테스트 데이터 세트에 대해 이루어진 예측으로 혼동 행렬을 만드는 방법을 설명합니다.

  • 19:20:00 이 섹션에서 강사는 딥 러닝 모델의 성능을 평가하기 위해 혼동 행렬을 만들고 구성하는 방법을 설명합니다. 먼저 토치 메트릭의 혼동 행렬 클래스와 ML 확장의 플롯 혼동 행렬 함수를 가져옵니다. 그런 다음 클래스 이름 목록의 길이로 클래스 수를 전달하여 혼동 행렬 인스턴스를 설정합니다. 혼동 행렬 텐서는 테스트 데이터 세트에 대한 예측 및 대상을 전달하여 생성됩니다. 마지막으로 혼동 행렬 텐서 및 클래스 이름 목록을 전달하여 혼동 행렬 플롯 함수를 사용하여 혼동 행렬을 플롯하고 올바른 예측을 보여주는 시각적으로 만족스러운 대각선과 모델이 오류를 범하는 잠재적인 영역을 만듭니다.

  • 19:25:00 이 섹션에서 강사는 분류 모델의 예측을 시각적으로 평가하기 위해 혼동 행렬을 사용하는 것의 중요성을 설명합니다. 코트. 혼동 행렬을 사용하는 것은 모델의 성능을 평가하는 강력한 방법이며 기존 레이블의 문제를 식별하는 데 도움이 될 수 있습니다. 그는 또한 특히 모델의 성능이 만족스러울 때 훈련된 모델을 저장하고 불러오는 것의 중요성에 대해서도 이야기합니다. 모델을 파일에 저장하면 다른 곳에서 사용하거나 올바르게 저장되었는지 확인하기 위해 다시 로드할 수 있습니다. 강사는 모델 디렉토리 경로 및 모델 저장 경로를 생성하는 방법을 안내한 다음 torch.save 메소드를 사용하여 모델 상태 사전을 저장하는 방법을 보여줍니다.

  • 19:30:00 이 섹션에서는 강사가 PyTorch 모델을 저장하고 로드하는 방법을 시연합니다. 학습된 후 모델의 모든 학습된 매개변수를 나타내는 상태 사전이 저장됩니다. 저장된 모델을 로드하기 위해 원본과 동일한 매개변수로 새 인스턴스가 생성됩니다. 모양 불일치 오류를 방지하려면 로드된 모델을 원본과 동일한 매개변수로 설정하는 것이 중요합니다. 로드된 모델은 원래 모델과 유사한 결과를 생성하는지 확인하기 위해 평가됩니다. 강사는 모델이 올바르게 저장되었는지 확인하기 위해 모델을 저장 및 로드한 후 평가하는 것의 중요성을 강조합니다.

  • 19:35:00 이 섹션에서는 로드된 모델이 저장되기 전에 이전에 훈련된 모델과 동일한 결과를 생성하는 것을 볼 수 있으며, torch.is_close를 사용하여 모델 결과가 서로 가까운지 프로그래밍 방식으로 확인할 수 있습니다. 절대 허용 오차 수준을 조정하여 결과가 충분히 유사하도록 할 수 있으며 불일치가 있는 경우 모델이 올바르게 저장되고 무작위 시드가 설정되었는지 확인하는 것이 좋습니다. 참조 자료와 torchvision 같은 라이브러리를 사용하는 것부터 모델을 평가하고 비선형 및 컨볼루션 신경망 모델을 실험하여 최상의 모델을 찾는 것까지 컴퓨터 비전 문제에 대한 워크플로우도 논의됩니다.

  • 19:40:00 "PyTorch for Deep Learning & Machine Learning"의 이 섹션에서 강사는 뷰어가 learn pytorch.io 웹사이트로 이동하여 제공된 연습을 완료하여 지금까지 배운 내용을 연습하도록 권장합니다. 이 연습은 이전 섹션에서 다룬 코드와 개념을 연습하는 데 중점을 두고 있으며 컴퓨터 비전에 대해 더 깊이 알고 싶은 사람들을 위한 추가 커리큘럼도 있습니다. 또한 이 섹션에서는 pytorch 사용자 지정 데이터 세트에 대한 주제를 다루고 필요한 경우 pytorch 설명서 및 스택 오버플로와 같이 도움을 받을 수 있는 리소스를 제공합니다.

  • 19:45:00 PyTorch 과정의 이 섹션에서는 토치 비전, 토치 텍스트, 토치 오디오 및 토치 rec와 같은 다양한 도메인 라이브러리뿐만 아니라 사용자 지정 데이터 세트로 작업하는 방법에 대해 설명합니다. 도메인 라이브러리에는 다양한 데이터 소스에 대한 데이터 로드 기능이 포함되어 있으며 Fashion MNIST와 같은 사전 구축된 비전 데이터 세트용 토치 비전 데이터 세트 및 맞춤형 데이터 세트와 같은 기본 제공 데이터 세트가 함께 제공됩니다. 각 도메인 라이브러리에는 사용자가 다른 도메인에서 다른 데이터 세트로 작업하는 데 도움이 되는 '데이터 세트' 모듈도 있으며 비전, 텍스트, 오디오, 추천과 같이 작업 중인 도메인에 따라 맞춤형 라이브러리를 살펴보는 것이 좋습니다. 파이토치에서.

  • 19:50:00 이 섹션에서 강사는 컴퓨터 비전 모델 구축에 사용하기 위해 사용자 지정 데이터 세트를 PyTorch에 로드하는 방법에 대해 설명합니다. 그들이 구축할 모델은 피자, 스시, 스테이크의 이미지를 분류하는 푸드 비전 미니(Food Vision Mini)입니다. 강사는 손실 함수 및 옵티마이저 선택, 훈련 루프 구축 및 모델 평가와 같은 모델 훈련과 관련된 다양한 단계를 다룹니다. 또한 모델과 함께 사용하기 위해 데이터를 변환하는 방법과 데이터 증대가 있는 모델과 없는 모델을 비교하는 방법도 설명합니다. 마지막으로 사용자 지정 데이터에 대한 예측을 수행하고 PyTorch 딥 러닝 저장소에서 비디오 노트북에 액세스하기 위한 리소스를 제공하는 방법을 보여줍니다.

  • 19:55:00 이 섹션에서 강사는 사용자 지정 데이터 세트를 통해 자신의 데이터를 PyTorch로 가져오는 프로세스에 대해 설명합니다. 그들은 데이터 로딩 기능 및 사용자 정의 가능한 데이터 로딩 기능을 위해 도메인 라이브러리를 사용하는 것의 중요성을 강조하고 비전, 텍스트, 오디오 및 추천과 같은 다양한 범주에 대한 이러한 라이브러리의 예를 제공합니다. 또한 강사는 필요한 라이브러리를 가져오고 PyTorch를 사용하여 모범 사례를 위해 장치에 구애받지 않는 코드를 설정하는 방법을 시연합니다. 사용 가능한 CUDA 장치를 확인하는 방법과 빠른 처리를 위해 GPU를 사용하도록 런타임 유형을 변경하는 방법을 보여줍니다. 마지막으로 강사는 다음 비디오에서 작업할 데이터를 얻는 방법을 암시합니다.

파트 21

  • 20:00:00 코스의 이 섹션에서 강사는 101,000개의 이미지가 있는 101개의 다양한 음식 카테고리가 포함된 Food 101 데이터 세트를 소개합니다. 그러나 PyTorch 사용을 연습하기 위해 강사는 세 가지 음식 범주와 이미지의 10%만 포함하는 이 데이터 세트의 더 작은 하위 집합을 만들었습니다. 이 작은 데이터 세트에는 클래스당 750개의 훈련 이미지, 250개의 테스트 이미지, 약 75개의 훈련 이미지와 25개의 테스트 이미지가 있습니다. 이 작은 데이터 세트로 시작하여 목표는 실험 속도를 높이고 모델 교육에 걸리는 시간을 줄이는 것입니다. 강사는 이 사용자 지정 데이터 세트를 만드는 방법에 대한 노트북을 제공하고 학생들이 작게 시작하여 필요에 따라 업그레이드하도록 권장합니다.

  • 20:05:00 이 섹션에서는 강사가 PyTorch용 이미지 데이터 세트를 다운로드하고 준비하는 과정을 설명합니다. 데이터 세트에는 피자, 스테이크, 스시 이미지가 포함되어 있으며 데이터라는 폴더에 저장됩니다. 강사는 Python 요청 라이브러리를 사용하여 데이터를 다운로드한 다음 데이터 폴더에 압축을 풉니다. 이 섹션의 목적은 유사한 프로젝트에 적용할 수 있는 PyTorch에 이미지 데이터를 로드하는 방법을 보여주는 것입니다. 강사는 로컬 컴퓨터나 클라우드에 위치할 수 있는 별도의 데이터 디렉터리를 갖는 것의 중요성을 강조합니다.

  • 20:10:00 이 섹션에서는 강사가 Python 라이브러리 zipfile을 사용하여 zip 파일에서 데이터를 추출하는 방법을 안내합니다. 그들은 기계 학습 컴퓨터 비전 문제를 위해 피자, 스테이크, 스시 이미지가 포함된 zip 파일을 추출하는 예제를 사용합니다. 강사는 zipfile.extractall() 메서드를 사용하여 zip 파일의 내용을 특정 파일 경로로 추출하는 방법을 보여줍니다. 또한 GitHub에서 잘못된 링크 주소를 복사하여 발생하는 코드의 오류를 해결하여 데이터 세트를 다운로드하는 데 올바른 링크를 사용하는 것이 중요함을 강조합니다. 전반적으로 표시된 프로세스는 PyTorch에서 사용할 사용자 정의 데이터 세트를 다운로드하고 추출하는 데 사용할 수 있습니다. 다음 비디오에서는 데이터를 더 자세히 살펴봅니다.

  • 20:15:00 이 섹션에서 강사는 데이터 준비 및 탐색을 통해 데이터와 하나가 되는 것의 중요성에 대해 논의합니다. 그는 데이터 세트를 준비하는 데 충분한 시간을 할애해야 할 필요성을 강조하면서 Abraham 손실 함수의 구성 인용문을 공유합니다. 그런 다음 강사는 표준 이미지 분류 형식으로 다운로드된 샘플 데이터의 각 디렉터리를 살펴봅니다. 그는 OS 도트 워크 기능을 사용하여 각 디렉토리에 대한 디렉토리 트리를 생성하고 각 디렉토리에 있는 디렉토리 및 이미지에 대한 정보를 표시합니다. 마지막으로 강사는 교육 및 테스트 부분을 설정하고 이에 대한 표준 이미지 분류 설정을 시연합니다.

  • 20:20:00 이 섹션에서 강사는 전체 데이터 세트 폴더에 각 이미지가 포함된 클래스 이름 하위 디렉터리가 있는 교육 및 테스트 폴더가 포함된 표준 이미지 분류 데이터 구조를 설명합니다. 강사는 특정 유형의 데이터를 저장하는 표준화된 방법이 데이터 형식에 대한 참조로 존재한다는 점에 주목합니다. PyTorch에서 사용할 이미지 데이터를 준비하기 위해 데이터를 텐서로 변환하는 코드를 작성합니다. 강사는 개와 고양이 이미지를 분류하는 데 필요한 데이터 형식을 강조 표시합니다. 여기에서 훈련 및 테스트 이미지 디렉토리는 각각의 클래스 폴더를 보유합니다. 강사는 또한 모든 이미지 경로 가져오기, 임의 이미지 경로 선택, Pathlib 모듈을 사용하여 이미지 클래스 이름 가져오기와 관련된 이미지 및 코드를 시각화할 계획을 언급합니다.

  • 20:25:00 이 섹션에서는 강사가 Pillow라는 Python 이미지 라이브러리를 사용하여 이미지를 열고 조작하는 방법을 설명합니다. 먼저 특정 폴더 내의 모든 이미지 경로 목록을 생성하고 Python의 무작위 라이브러리를 사용하여 이 목록에서 이미지를 무작위로 선택합니다. 그런 다음 이미지를 열고 표시하는 동시에 그에 대한 메타데이터도 추출합니다. 또한 강사는 이미지 로드 및 처리 방법을 포함하여 Torch Vision 라이브러리의 기능에 대한 개요를 제공합니다.

  • 20:30:00 이 섹션에서 강사는 PIL 라이브러리를 사용하여 이미지로 작업하는 방법과 이미지 메타데이터를 열고 분석하는 방법을 시연합니다. 이미지 클래스는 이미지 데이터가 저장되어 있는 디렉토리의 이름이며 메타데이터는 Print 기능을 사용하여 가져옵니다. 그런 다음 강사는 피자, 스시, 스테이크를 포함하여 데이터 세트에서 임의의 음식 이미지를 보여주고 데이터 세트에 익숙해지기 위해 이미지를 무작위로 시각화하는 것의 중요성을 설명합니다. 강사는 시청자에게 다음 섹션에서 Matplotlib를 사용하여 이미지를 시각화하는 약간의 과제를 제공합니다.

  • 20:35:00 이 섹션에서 강사는 matplotlib로 이미지와 데이터를 플로팅하고 NumPy 메서드 NP를 사용하여 이미지를 배열로 변환하는 방법을 보여줍니다. 형태 불일치 문제를 방지하기 위해 데이터의 형태를 이해하는 것의 중요성이 강조됩니다. 알약 라이브러리 및 matplotlib의 기본 형식은 색상 채널 마지막 형식이지만 PyTorch는 기본적으로 색상 채널 우선 형식입니다. 또한 강사는 다양한 이미지를 시각화하고 데이터에 익숙해지는 방법과 데이터를 PyTorch와 함께 사용할 PyTorch 텐서로 변환하여 데이터를 변환하는 방법을 보여줍니다.

  • 20:40:00 이 섹션에서 강사는 대상 데이터를 PyTorch 텐서로 변환하고 PyTorch 데이터 세트 및 데이터 로더를 만드는 프로세스에 대해 설명합니다. 강사는 PyTorch 문서를 사용하여 이미지 폴더 모듈로 데이터 세트를 생성하는 방법을 보여주고 데이터에 특정 변환을 적용할 수 있는 변환 매개변수를 소개합니다. 그런 다음 강사는 이미지 크기를 64x64로 조정하고 수평면에서 무작위로 뒤집어 데이터 세트의 다양성을 인위적으로 높이는 이미지 데이터에 대한 변환을 생성하는 방법을 시연합니다. 이는 변환 목록을 인수로 사용하는 transforms.compose 메서드를 사용하여 수행됩니다.

  • 20:45:00 이 섹션에서 강사는 PyTorch의 변환 모듈을 사용하여 이미지를 토치 텐서로 변환하는 방법을 설명합니다. 이것은 "transforms.ToTensor()" 함수로 수행되며, 이 함수는 PIL 이미지 또는 NumPy 배열을 0에서 255 범위의 색상 채널이 있는 높이에서 0에서 255 범위의 색상 채널 높이 너비 모양의 토치 플로트 텐서로 변환합니다. 1. 강사는 이 변환을 통해 데이터를 전달하려고 제안하고 "transforms.Resize()" 함수를 사용하여 이미지 모양을 변경하는 방법을 보여줍니다. 이 섹션은 데이터 증대 변환을 포함하여 torchvision 라이브러리에서 사용할 수 있는 다양한 변환과 변환된 이미지를 탐색하기 위한 향후 시각화 코드의 미리 보기에 대한 논의로 마무리됩니다.

  • 20:50:00 이 섹션에서 강사는 경로에서 이미지를 무작위로 샘플링하고 로드 및 변환한 다음 PyTorch를 사용하여 원본과 변환된 버전을 비교하는 방법을 시연합니다. 이 코드는 랜덤 시드 함수를 사용하여 랜덤 함수의 시드를 설정하고 이미지 경로 목록에서 k 이미지를 무작위로 샘플링합니다. 그런 다음 강사는 matplotlib 라이브러리를 사용하여 1개의 행과 n개의 열이 있는 서브플롯을 생성하여 원본 이미지와 변환된 이미지를 나란히 플로팅합니다. 변환된 이미지는 마지막으로 matplotlib 라이브러리의 기본 색상 채널 형식에 맞게 모양을 변경해야 합니다. 마지막으로 코드는 원본 이미지와 변환된 이미지의 제목을 설정하고 슈퍼 제목을 이미지의 클래스 이름으로 설정합니다.

  • 20:55:00 비디오의 이 섹션에서 강사는 변환을 사용하여 PyTorch를 사용하는 딥 러닝 모델의 이미지 데이터를 조작하는 방법을 보여줍니다. 강사는 변환을 데이터 변환과 동일하게 설정합니다. 즉, 이미지 크기가 조정되고 무작위로 수평으로 뒤집힌 다음 텐서로 변환됩니다. 또한 permute 함수를 사용하여 축의 순서를 바꾸어 데이터 모양을 재정렬하는 방법도 보여줍니다. 그런 다음 이미지는 딥 러닝 모델과 함께 사용하기에 이상적인 텐서 형식의 변환된 이미지와 함께 원본 버전과 변환된 버전을 나란히 표시하도록 플롯됩니다. 강사는 이미지 크기가 조정할 수 있는 하이퍼 매개변수라고 조언하고 시청자가 PyTorch에서 사용할 수 있는 다양한 변환을 탐색하도록 권장합니다.

파트 22

  • 21:00:00 이 섹션에서는 강사가 이미지 폴더 옵션을 사용하여 이미지 데이터를 로드하는 방법을 설명합니다. 토치 비전 데이터 세트 모듈을 사용하여 일반 이미지 분류 형식으로 데이터를 로드하는 방법을 보여줍니다. 사전 구축된 데이터 세트 기능인 이미지 폴더가 시연되며 변환을 통해 모든 사용자 지정 이미지를 텐서에 로드하는 데 사용할 수 있습니다. 그런 다음 강사는 교육 데이터 세트를 변환하고 교육 데이터 세트와 동일한 방식으로 변환되는 테스트 데이터 세트를 만드는 방법을 보여줍니다. 마지막으로 생성된 데이터 세트를 인쇄합니다.

  • 21:05:00 이 섹션에서 강사는 PyTorch의 이미지 폴더 기능을 사용하여 이미지를 텐서에 로드하고 파이프라인을 사용하여 변환한 다음 PyTorch 모델과 함께 사용할 수 있는 방법을 설명합니다. 클래스 이름을 목록 또는 사전으로 가져오고 데이터 세트의 길이를 확인하는 등 사전 구축된 데이터 로더와 함께 제공되는 다양한 속성에 액세스하고 활용하는 방법을 보여줍니다. 또한 인덱싱을 사용하여 교육 데이터 세트에서 샘플 및 레이블을 시각화하는 방법을 보여줍니다.

  • 21:10:00 코스의 이 섹션에서 강사는 이미지 데이터 세트를 PyTorch의 기본 데이터 형식인 텐서 형식으로 변환하는 방법을 시연합니다. 그들은 피자 이미지의 예를 사용하고 관련 레이블을 가져와 숫자 형식으로 변환하는 방법을 보여줍니다. 그런 다음 데이터 유형 및 모양과 같은 텐서 데이터에 대한 몇 가지 중요한 정보를 인쇄하여 나중에 문제를 해결하는 데 유용합니다. 마지막으로 matplotlib를 사용하여 이미지를 플로팅하고 제목을 클래스 이름(이 경우 피자)으로 설정합니다. 그들은 학생들이 다른 이미지로 이것을 시도하고 다른 변형을 탐구하도록 권장합니다.

  • 21:15:00 비디오의 이 섹션에서 강사는 로드된 이미지를 PyTorch의 데이터 로더로 변환하는 프로세스에 대해 설명합니다. 데이터 로더는 데이터 세트를 반복 가능한 것으로 변환하여 사용자가 배치 크기를 사용자 정의하고 한 번에 특정 수의 이미지를 볼 수 있도록 합니다. 모든 이미지가 한 번에 로드되면 메모리가 부족해질 위험이 있기 때문에 이는 중요합니다. 따라서 이미지를 일괄 처리하면 사용 가능한 모든 메모리를 활용하는 데 도움이 됩니다. 계속해서 강사는 기차 데이터 로더를 만드는 단계별 가이드를 제공하고 데이터를 로드하는 데 사용되는 CPU 코어 수를 결정하는 작업자 매개변수 수의 개념도 소개합니다.

  • 21:20:00 이 섹션에서 강사는 PyTorch에서 데이터를 교육하고 테스트하기 위해 데이터 로더를 만들고 사용자 지정하는 방법에 대해 설명합니다. 데이터 세트를 초기화하고 배치 크기 및 작업자 수와 같은 데이터 로더의 하이퍼파라미터를 사용자 정의하는 방법을 보여줍니다. 강사는 또한 로더를 반복하고 이미지 및 레이블의 모양에 대한 정보를 얻는 방법을 보여줍니다. 이 섹션은 로딩 프로세스에 대한 요약과 이미지 텐서에서 패턴을 식별하기 위한 컨벌루션 신경망 구축에 대한 권장 사항으로 결론을 내립니다.

  • 21:25:00 이 섹션에서 강사는 이미지 데이터를 Tensor 형식으로 로드하기 위해 사용자 지정 데이터 로드 클래스를 만드는 프로세스에 대해 설명합니다. 목표는 이 사용자 지정 클래스를 통해 이미지 폴더의 기능을 복제하는 것입니다. 이는 좋은 사례이며 미리 빌드된 기능이 존재하지 않는 경우 필요할 수 있기 때문입니다. 강사는 사용자 정의 클래스가 이미지를 로드하고, 클래스 이름을 목록으로 가져오고, 데이터 세트에서 클래스를 사전으로 가져오는 데 필요한 단계를 나열합니다. 거의 모든 것에서 데이터 세트를 생성할 수 있는 유연성뿐만 아니라 오류 및 성능 문제의 가능성을 포함하여 사용자 정의 데이터 세트 생성의 장단점에 대해서도 설명합니다. 그런 다음 강사는 OS 및 파일 시스템 작업을 위한 경로 lib를 포함하여 사용자 지정 클래스를 만드는 데 필요한 모듈을 가져옵니다.

  • 21:30:00 이 섹션에서는 PyTorch에서 사용자 지정 데이터 세트를 만드는 방법을 배우고 대상 디렉터리에서 클래스 이름을 가져오는 함수 작성에 중점을 둡니다. 사용자 지정 데이터 세트는 파일에서 이미지를 로드하고, 데이터 세트에서 클래스 이름을 가져오고, 데이터 세트에서 사전으로 클래스를 가져오는 데 사용됩니다. 이 함수는 OS 스캐너를 사용하여 대상 디렉토리를 탐색하고 클래스 이름을 가져오고 클래스 이름을 찾을 수 없으면 오류를 발생시켜 디렉토리 구조에 문제가 있음을 나타냅니다. 나중에 torch.utils.data.Dataset을 하위 클래스로 분류하여 사용자 지정 데이터 세트를 생성합니다.

  • 21:35:00 비디오의 이 섹션에서 강사는 디렉토리를 문자열로 받아 클래스 이름 목록과 클래스 이름을 정수로 매핑하는 사전을 반환하는 "find_classes"라는 함수를 만드는 방법을 보여줍니다. 이 기능은 OS 스캐너를 활용하여 대상 디렉토리를 스캔하고 클래스 이름을 가져옵니다. 강사는 클래스 이름을 찾을 수 없는 경우 오류를 발생시키는 방법도 보여줍니다. 이 기능은 지정된 디렉토리에 사용할 수 있으며 교육 디렉토리에 대해 이전에 수행된 기능을 복제합니다.

  • 21:40:00 비디오의 이 섹션에서 강사는 torch.utils.data.dataset를 하위 클래스로 지정하여 사용자 정의 데이터 세트를 생성하는 방법을 설명합니다. 데이터 세트는 키에서 데이터 샘플로의 맵을 나타내야 합니다. 여기서 키는 대상 또는 레이블을 참조하고 이 경우 데이터 샘플은 음식 이미지입니다. 하위 클래스는 주어진 키에 대한 데이터 샘플을 가져오고 선택적으로 len 메서드를 덮어써 데이터 세트의 크기를 반환하는 항목 가져오기 메서드를 재정의해야 합니다. 강사는 사용자 지정 데이터 세트를 구축하는 단계를 안내하고 클래스 이름을 정수에 매핑하기 위해 이전 섹션에서 생성한 도우미 함수를 사용하는 방법을 설명합니다.

  • 21:45:00 이 섹션에서는 강사가 PyTorch에서 사용자 지정 데이터 세트를 만드는 방법을 설명합니다. 이렇게 하려면 torch.utils.data.Dataset 클래스를 하위 클래스로 분류하고 대상 디렉토리(데이터가 상주하는 곳) 및 변환(데이터 변환을 수행하기 위해)을 전달하여 사용자 정의 데이터 세트를 초기화해야 합니다. 또한 ID X에 대한 경로, 변환, 클래스 및 클래스와 같은 여러 속성을 생성해야 합니다. 또한 이미지를 로드하는 함수를 생성하고 LAN 메서드를 재정의하여 데이터 세트의 길이를 반환하고 가져오기를 수행해야 합니다. 인덱스를 전달할 때 주어진 샘플을 반환하는 item 메서드. 마지막으로 pathlib를 구현하고 test 또는 train 디렉터리와 같은 대상 디렉터리를 전달하여 사용자 지정 데이터 세트를 작성합니다.

  • 21:50:00 이 섹션에서 강사는 맞춤형 PyTorch 데이터 세트 클래스 생성과 관련된 다양한 단계를 설명합니다. 첫 번째 단계는 올바른 파일 이름 규칙을 따르는 모든 이미지 경로를 가져오는 것입니다. 다음 단계는 선택적일 수 있는 일련의 이미지 변환을 만드는 것입니다. 인덱스를 가져와서 이미지를 반환하는 이미지를 로드하는 함수도 생성됩니다. 그런 다음 강사는 선택 사항인 데이터 세트의 총 샘플 수를 반환하도록 "len" 메서드를 재정의하는 방법을 보여줍니다. 마지막으로 인덱스를 전달하면 특정 샘플을 반환하도록 "항목 가져오기" 메서드를 덮어씁니다.

  • 21:55:00 이 섹션에서는 데이터가 PyTorch에 로드되는 방식을 사용자 정의하기 위해 torch.utils.data.Dataset의 서브클래싱에 대해 배웁니다. 클래스는 루트 디렉터리와 클래스 이름을 인덱스에 매핑하는 사전으로 초기화됩니다. __len__ 메소드는 데이터세트의 길이를 반환하는 반면 __getitem__은 데이터세트에 대한 인덱싱을 허용하여 토치 텐서 이미지의 튜플과 해당 정수 레이블을 반환합니다. 이 클래스에는 튜플을 반환하기 전에 이미지에 변형을 적용하기 위한 선택적 변형 매개 변수도 있습니다. torch.utils.data.Dataset 하위 클래스화의 이점은 제공하는 사용자 정의 기능이지만 오류가 발생하기 쉬운 상당한 양의 코드를 작성해야 합니다.>
 

딥 러닝 및 기계 학습을 위한 PyTorch - 전체 과정(23-26부 설명)


딥 러닝 및 기계 학습을 위한 PyTorch - 전체 과정

파트 23

  • 22:00:00 이 섹션에서 강사는 Torchvision 모듈을 사용하여 PyTorch에서 사용자 지정 데이터 세트를 생성하는 방법을 보여줍니다. 원시 JPEG 이미지를 텐서로 변환하기 위한 변환을 만들고 학습 및 테스트 변환 구성을 설정합니다. 그런 다음 사용자 지정 이미지 폴더 클래스를 테스트하고 자체 사용자 지정 데이터 세트에서 작동하는지 확인합니다. 제대로 작동하는지 확인하기 위해 길이 및 클래스 속성을 확인합니다. 마지막으로 학습 데이터 사용자 정의 및 테스트 데이터 사용자 정의를 검사하여 모든 것이 예상대로 작동하는지 확인합니다.

  • 22:05:00 딥 러닝 및 기계 학습을 위한 PyTorch 전체 과정의 이 섹션에서 강사는 클래스를 ID와 비교하여 이전 섹션에서 생성한 사용자 정의 데이터 세트와 원본 이미지 폴더 데이터 세트 간의 동등성을 확인하는 방법을 시연합니다. 두 데이터 세트의 X. 그는 우리가 고유한 사용자 정의 데이터 세트 로드 기능을 생성하여 이미지 폴더 데이터 세트 클래스의 주요 기능을 복제할 수 있다고 단언합니다. 여기서 얻을 수 있는 점은 PyTorch가 상속할 기본 데이터 세트 클래스를 제공한다는 것입니다. 항목 메서드를 가져오고 일종의 값을 반환하면 자체 데이터 세트 로드 함수를 만들 수 있습니다. 강사는 데이터를 시각화하기 위해 훈련된 데이터 사용자 지정 클래스에서 임의의 이미지를 표시하는 함수를 만드는 방법을 설명합니다.

  • 22:10:00 이 섹션에서 강사는 "데이터 세트", "클래스" 및 "n"을 매개 변수로 사용하는 "무작위 이미지 표시"라는 함수를 만드는 단계를 안내합니다. 이 기능은 데이터 세트에서 무작위로 선택된 n개의 이미지를 표시하고 "모양 표시"가 true로 설정된 경우 해당 모양을 인쇄합니다. 강사는 또한 n이 10보다 큰 경우 디스플레이를 조정하고 재현성을 위해 임의 시드를 설정하는 것과 같은 구현 세부 사항을 살펴봅니다. 또한 함수는 무작위 샘플 이미지 또는 인덱스를 반복하고 Matplotlib로 플로팅합니다.

  • 22:15:00 이 섹션에서 강사는 플롯을 설정하고 이미지의 크기가 matplotlib와 일치하는지 확인하여 PyTorch에서 딥 러닝 모델을 계속 구축합니다. 플로팅을 위해 텐서 치수를 조정하고, matplotlib 플롯에 하위 플롯을 추가하고, 클래스 목록인 클래스 변수를 기반으로 플롯의 제목을 조정합니다. 그런 다음 내장된 pytorch 이미지 폴더와 강사가 만든 사용자 지정 데이터 세트 모두에 대해 이미지 폴더에서 임의의 이미지를 표시하는 기능을 만듭니다. 마지막으로 시드를 조정하고 이미지를 플롯하여 플롯을 조정하는 코드가 어떻게 이해되는지 확인합니다.

  • 22:20:00 대본의 이 섹션에서 강사는 사용자 지정 로드된 이미지 데이터 세트를 데이터 로더로 전환하는 방법을 시연합니다. 이는 이미지를 일괄 처리하고 모델과 함께 사용하는 데 필요한 단계입니다. torchvision.datasets.ImageFolder 및 torchvision.transforms를 사용하면 사용자 정의 데이터 세트가 텐서 형식으로 변환됩니다. 다음 단계는 torch.utils.data.DataLoader를 사용하여 데이터 세트를 데이터 로더로 바꾸는 것입니다. 강사는 훈련 데이터 로더 사용자 지정 및 테스트 데이터 로더 사용자 지정 모두에 대해 일괄 처리 크기를 32로 설정하고 작업자 수를 0으로 설정합니다. 차이점은 테스트 데이터는 섞지 않고 기차 데이터는 섞는다는 것입니다.

  • 22:25:00 이 섹션에서는 비디오에서 맞춤형 데이터 로더와 PyTorch의 데이터 변환을 다룹니다. 강사는 먼저 OOS CPU 수를 재설정하고 마비 작업자를 0으로 설정하여 교육이 원활하게 실행되도록 합니다. 사용자 지정 데이터 로더를 설정한 후 인쇄 기능을 사용하여 이전에 설정한 변환에 의해 32로 설정된 이미지 모양과 배치 크기를 확인합니다. 강사는 또한 데이터 증강이 어떻게 훈련 데이터 세트의 다양성을 인위적으로 증가시킬 수 있는지 설명하고 크기 조정, 중앙 자르기, 회색조, 임의 변환 및 임의 증가를 포함하여 토치 비전 변환 모듈을 사용하여 데이터를 변환할 수 있는 다양한 방법을 시연합니다. .

  • 22:30:00 다양한 이미지 변환을 적용하여 학습 데이터에 다양성을 인위적으로 추가하는 프로세스인 데이터 확대에 대해 배웠습니다. 이는 모델이 보이지 않는 데이터에 대해 보다 일반화되도록 하는 데 도움이 됩니다. 자르기, 교체, 전단 등과 같은 다양한 종류의 데이터 확장이 있습니다. PyTorch에는 모델이 잘 수행되도록 교육하는 데 도움이 되는 기본 요소 또는 기능이 포함된 토치 비전 패키지가 있습니다. 데이터 증대 및 기타 개선 사항을 사용하여 PyTorch는 ResNet 50 모델과 같은 높은 정확도로 최신 모델을 교육할 수 있었습니다.

  • 22:35:00 이 섹션에서 강사는 학습률 최적화, 더 오래 훈련, 다양한 증강 기술 사용과 같은 모델 정확도를 개선하는 방법에 대해 논의합니다. 강사는 임의성의 힘을 활용하여 여러 크기 빈을 사용하여 다양한 방식으로 이미지를 변경하는 trivial Augment 기술에 중점을 둡니다. 강사는 PyTorch 토치 비전 변환 라이브러리를 사용하여 사소한 증강을 구현하는 방법을 시연하고 이에 대해 더 읽어보고 싶은 사람들을 위해 논문 링크를 제공합니다. 또한 강사는 개별 문제에 가장 적합한 것이 무엇인지 확인하기 위해 다양한 증강 기술과 실험을 시도해 보라고 조언합니다. 마지막으로 강사는 모든 이미지 경로를 가져오고 특정 패턴과 일치하는 모든 파일 및 폴더를 글로빙하여 증강 파이프라인을 테스트하는 방법을 보여줍니다.

  • 22:40:00 이 섹션에서 비디오는 훈련 데이터 세트에 인위적으로 다양성을 추가하기 위해 이미지를 변환하는 데 데이터 증강 기술인 trivial Augment를 사용하는 방법을 보여줍니다. 임의성의 힘은 다양한 증강 유형 중에서 선택하고 다양한 수준의 강도로 적용함으로써 활용됩니다. 이 섹션에서는 임의로 변환된 이미지에 trivial Augment가 어떻게 적용되고 결과가 표시되는지 보여줍니다. 목표는 기계 학습 모델이 조작된 이미지의 패턴을 학습하고 그에 따라 식별할 수 있도록 하는 것입니다. 다음 섹션에서는 작은 VGG 아키텍처를 사용하여 데이터 증대 없이 최초의 컴퓨터 비전 모델을 구축하는 데 중점을 둡니다.

  • 22:45:00 이 섹션에서 발표자는 PyTorch 모델에 대한 변환 생성 및 데이터 로드 프로세스를 진행합니다. 목표는 데이터 폴더(이 경우 피자, 스테이크, 스시)에서 이미지를 로드하고 텐서로 변환하는 것입니다. 변환에는 이미지 크기를 64x64로 조정하고 값이 0과 1 사이가 되도록 이미지를 텐서로 변환하는 작업이 포함됩니다. 발표자는 데이터 로더를 생성하고 배치 크기와 데이터 로드 전용 CPU 코어 수를 조정하는 방법도 설명합니다. 이 예에서 사용된 배치 크기는 32입니다.

  • 22:50:00 이 섹션에서는 강사가 PyTorch의 DataLoader를 사용하여 데이터를 로드하고 변환하는 방법을 설명합니다. 이 프로세스에는 변환을 생성한 다음 DataLoader 함수를 사용하여 동시에 데이터를 로드하고 변환하는 작업이 포함됩니다. 또한 강사는 COM, ReLU, MaxPool 및 ComToD와 같은 레이어로 구성된 첫 번째 COM 블록 생성을 포함하여 Tiny VGG 아키텍처를 처음부터 구축하기 위한 간단한 코드를 제공합니다. 모델은 입력 형태, 은닉 단위 및 출력 형태 매개변수로 초기화됩니다. 강사는 학습자가 커널 크기 및 보폭과 같은 하이퍼 매개변수에 대해 다른 값을 실험하도록 권장합니다.

  • 22:55:00 이 섹션에서는 PyTorch를 사용하여 컨볼루션 신경망을 생성하는 것을 봅니다. 네트워크에 대한 컨벌루션 블록과 최대 풀링 계층을 정의하는 것으로 시작합니다. 그런 다음 동일한 블록을 복제하여 다른 블록을 만들고 출력 모양과 일치하도록 입력 모양을 변경합니다. 그런 다음 convolutional 블록의 출력을 특징 벡터로 변환하는 분류기 레이어를 만들고 선형 레이어를 통과하여 10개의 클래스를 출력합니다. 마지막으로, 컨볼루션 블록을 통해 데이터를 전달하고 각 단계에서 모양을 출력하기 위해 forward 메서드를 재정의합니다. 순방향 방법은 GPU 계산 속도를 높이는 연산자 융합을 포함하도록 다시 작성할 수도 있습니다.

파트 24

  • 23:00:00 이 섹션에서 강사는 딥 러닝 컴파일러에서 가장 중요한 최적화인 연산자 융합의 개념에 대해 설명합니다. 또한 RGB 컬러 이미지를 위한 작은 VGG 아키텍처를 사용하여 모델을 만들고 입력 및 출력 모양을 확인합니다. 강사는 메모리와 컴퓨팅 간의 전송을 피함으로써 대규모 신경망의 계산 속도를 높이기 위해 연산자 융합을 사용하는 것의 중요성을 강조합니다. 또한 모델을 통해 더미 데이터를 전달하여 문제를 해결하고 전달 방법이 올바르게 작동하는지 확인하도록 제안합니다. 마지막으로 입력 유형의 불일치로 인해 이미지 일괄 처리를 모델에 전달하려고 하면 오류 메시지가 표시됩니다.

  • 23:05:00 이 섹션에서는 강사가 모델의 모양 오류 문제를 해결하고 있습니다. 선형 레이어를 통해 텐서를 전달할 때 행렬 곱셈 규칙을 충족해야 한다고 설명합니다. 강사는 행렬 모양을 조사하고 은닉 유닛의 수를 나타내는 10이 2560을 곱할 때 문제를 일으키는지 확인합니다. 그들은 이전 레이어의 출력 모양을 사용하여 10에 16x16을 곱하여 2560을 얻어야 한다고 결정합니다. 수정 후 이를 확인하고 모델의 모양이 CNN 설명자의 출력과 일치하는지 확인하고 추가 문제 해결로 이동하여 결국 컨볼루션 레이어에서 패딩을 제거하면 모양이 CNN 설명자의 출력과 일치함을 발견합니다.

  • 23:10:00 이 섹션에서 강사는 사용자가 PyTorch 모델 요약을 인쇄할 수 있는 패키지인 Torch Info를 소개합니다. 먼저 강사는 전달 방법의 인쇄 문을 주석 처리하고 pip install 명령을 사용하여 Google CoLab에 Torch Info를 설치합니다. 그런 다음 강사는 Torch Info에서 요약을 가져오고 이를 사용하여 모델과 입력 크기를 전달하여 모델을 통해 흐르는 데이터의 모양을 얻습니다. 강사는 Torch Info가 레이어 및 해당 모양을 포함하여 모델 요약을 인쇄하는 방법을 보여줍니다.

  • 23:15:00 이 섹션에서 발표자는 PyTorch 모델에서 각 레이어의 입력 및 출력 모양에 대한 아이디어를 제공하는 데 사용되는 토치 정보 패키지에 대해 설명합니다. 그들은 패키지가 각 계층의 매개변수 수에 대한 정보도 제공하므로 향후 애플리케이션에 대한 모델 크기 및 스토리지 제약 조건을 결정하는 데 도움이 될 수 있다고 설명합니다. 발표자는 모델이 커지고 레이어가 많을수록 매개변수가 많아져 입력 크기와 예상 총 크기가 커진다고 말합니다. 다음 섹션에서 화자는 사용자 지정 데이터 세트 교육으로 이동하고 거의 모든 모델 및 데이터 로더와 함께 사용할 수 있는 일반적이고 두 가지 기능(훈련 단계 및 테스트 단계)을 생성합니다. 학습 단계 함수는 모델, 데이터 로더, 손실 함수 및 옵티마이저를 가져와서 평가 메트릭을 설정하는 동안 모델을 학습 모드로 전환합니다.

  • 23:20:00 이 섹션에서 화자는 PyTorch에서 기차 루프 기능에 대한 기차 손실 및 기차 정확도 값 설정에 대해 논의합니다. 데이터는 데이터 로더를 사용하여 반복되며 각 배치에 대해 예측을 수행하고 손실을 계산하기 위해 정방향 전달이 수행됩니다. 그런 다음 옵티마이저는 역전파를 수행하고 단계를 수행하는 데 사용됩니다. 기차 루프가 완료되면 예측된 클래스를 가져와 올바른 레이블과 비교하여 정확도를 계산합니다. 이것은 모든 배치에서 에포크당 평균을 얻기 위해 열차 손실 및 열차 정확도가 조정되는 배치 루프 외부에서 수행됩니다. 그런 다음 스피커는 시청자에게 테스트 루프 기능을 작성하도록 요청합니다.

  • 23:25:00 이 섹션에서 강사는 데이터 세트에서 PyTorch 딥 러닝 모델의 성능을 평가하기 위한 테스트 단계를 생성하는 프로세스를 진행합니다. 이 단계에는 모델을 평가 모드로 설정하고, 데이터 세트의 배치를 반복하고, 데이터를 대상 장치로 전송하고, 순방향 패스를 수행하고, 배치당 손실 및 정확도를 계산하고, 손실 및 정확도를 누적하고, 메트릭을 조정하는 작업이 포함됩니다. 평균값을 얻기 위해. 그런 다음 강사는 다음 섹션에서 다룰 모델 훈련 프로세스를 기능화하기 위해 훈련 함수를 만들 것을 제안합니다.

  • 23:30:00 이 섹션에서 강사는 학습 단계와 테스트 단계 기능을 결합한 학습 기능을 만드는 과정을 안내합니다. 아이디어는 단 한 번의 함수 호출로 모델을 훈련하고 평가하기 위해 이 두 함수를 모두 호출하는 함수를 만드는 것입니다. 학습 기능은 옵티마이저, 데이터 로더, 손실 기능 등을 포함한 다양한 모델 매개변수를 사용합니다. 그런 다음 강사는 학습 및 테스트 손실과 정확도를 포함하여 학습할 때 모델의 성능을 추적하는 데 도움이 되는 빈 사전을 만듭니다. 그런 다음 모델이 훈련되는 동안 진행률 표시줄을 얻기 위해 TQDM을 호출하면서 시대를 반복합니다. 훈련 기능은 더 많은 모델을 훈련하고 기존 코드를 활용할 때 코드를 다시 작성할 필요가 없는 유용한 도구입니다.

  • 23:35:00 이 섹션에서 강사는 훈련 및 테스트 단계 기능을 각각 사용하여 훈련 및 테스트를 추적하는 훈련 기능을 설명합니다. 이 함수는 지정된 수의 에포크 동안 실행되며 각 에포크마다 멋진 인쇄 문을 사용하여 열차 및 테스트 손실 및 정확도를 인쇄합니다. 결과는 나중에 분석에 사용하기 위해 결과 사전에 저장됩니다. 학습 기능은 학습 단계 기능과 테스트 단계 기능을 활용하여 모델을 업데이트하고 각각 테스트합니다. 이 함수는 에포크의 결과를 반환합니다.

  • 23:40:00 이 섹션에서 강사는 데이터 준비, 모델 구축 및 선택, 교육 루프 구축, 이제 손실 함수 및 옵티마이저 생성 과제를 포함하는 PyTorch 워크플로의 진행 상황을 검토합니다. 섹션 7.7로 이동하여 강사는 사용자 정의 데이터 세트에서 기준 모델인 모델 제로를 훈련하고 평가하는 방법을 안내합니다. 그들은 재현성을 위해 무작위 시드를 설정하고, 컬러 이미지에 대해 입력 모양이 3인 작은 VGG 모델을 인스턴스화하고, 숨겨진 단위의 수와 출력 모양을 훈련 데이터 세트의 클래스 수와 일치하도록 설정합니다. 또한 다중 클래스 분류를 위해 교차 엔트로피 손실 함수를 선택하고 학습률이 0.001인 Adam 옵티마이저를 시도합니다.

  • 23:45:00 이 섹션에서 강사는 딥 러닝 모델의 교육 프로세스 시간을 측정하는 방법을 보여줍니다. 먼저 시간에서 기본 타이머 클래스를 가져온 다음 이전 비디오의 훈련 기능을 사용하여 모델 0을 훈련하기 전에 타이머를 시작합니다. 그런 다음 훈련 데이터를 훈련 데이터 로더로 설정하고 테스트 데이터를 테스트 데이터 로더로 간단하게 설정하고 옵티마이저를 FriendlyAtomOptimizer로 설정하고 손실 함수를 n 교차 엔트로피 손실로 설정합니다. 모델은 5개의 에포크 동안 훈련되고 총 훈련 시간을 표시하기 위해 타이머가 종료됩니다. 그런 다음 강사는 교육 및 테스트 세트에 대한 모델의 정확도 결과를 각각 약 40% 및 50%로 표시합니다. 그들은 모델을 개선하기 위해 더 많은 레이어 또는 은닉 유닛 추가, 더 오래 맞추기, 활성화 함수 변경, 학습 속도 조정과 같은 다양한 방법을 시도할 것을 제안합니다.

  • 23:50:00 이 섹션에서 강사는 시간 경과에 따른 모델의 진행 상황을 추적하기 위해 손실 곡선을 그리는 방법을 설명합니다. 손실 곡선은 왼쪽의 손실 값과 아래쪽 축의 단계를 시각화하여 시간 경과에 따른 모델의 진행 상황을 추적하는 방법입니다. matplotlib를 사용하여 결과 사전의 학습 및 테스트 손실과 정확도 값을 플로팅하면 모델이 어떻게 수행되고 있는지 확인하고 평가할 수 있습니다. 강사는 손실 및 정확도 값을 문자열 및 부동 소수점 목록으로 포함하는 결과 사전을 가져오는 "def plot loss curves"라는 함수를 작성합니다.

  • 23:55:00 이 섹션에서 강사는 에포크를 시간 메트릭으로 사용하여 교육 및 테스트 데이터 모두에 대한 손실 곡선을 만드는 방법을 보여줍니다. 플롯은 각각에 대한 레이블과 제목이 있는 두 개의 하위 플롯으로 구성됩니다. 하나는 손실에 대한 것이고 다른 하나는 정확도에 대한 것입니다. 손실 곡선의 이상적인 추세는 시간이 지남에 따라 손실이 감소하고 정확도가 증가하는 것입니다. 강사는 손실이 최적의 값에 도달하는지 확인하기 위해 추가 에폭을 실험하도록 시청자에게 권장합니다. 다음 비디오에서는 다양한 형태의 손실 곡선을 다룰 것이며 강사는 손실 곡선 해석에 대한 가이드를 권장합니다.

파트 25

  • 24:00:00 딥 러닝 및 머신 러닝을 위한 PyTorch 과정의 이 섹션에서 강사는 시간 경과에 따른 모델 성능 평가에서 손실 곡선과 손실 곡선의 중요성에 대해 논의합니다. 손실 곡선은 시간 경과에 따라 손실이 감소하고 정확도가 증가하는 추세를 보여야 합니다. 다양한 형태의 손실 곡선이 있으며 이상적인 손실 곡선은 훈련 및 테스트 손실이 비슷한 비율로 감소한다는 것을 보여줍니다. 과소적합은 모델의 손실이 더 낮을 수 있을 때 발생하는 반면, 과적합은 모델이 훈련 데이터를 너무 잘 학습하여 테스트 손실보다 훈련 손실이 낮아질 때 발생합니다. 강사는 Google의 손실 곡선 가이드에서 추가 커리큘럼을 제공하고 정규화 기술 및 모델 복잡성 감소와 같은 과적합을 해결하는 방법에 대해 논의합니다.

  • 24:05:00 이 섹션에서 논의된 딥 러닝 모델에서 과적합을 줄이는 몇 가지 방법. 데이터 증대 또는 더 나은 데이터 품질을 통해 더 많은 데이터를 얻으면 모델이 더 일반화 가능한 패턴을 학습하는 데 도움이 될 수 있습니다. 사전 학습된 모델에서 학습한 패턴을 가져와 자신의 데이터 세트에 적용하여 전이 학습을 사용하는 것도 효과적일 수 있습니다. 레이어 또는 숨겨진 단위의 수를 줄여 모델을 단순화하는 것도 도움이 될 수 있습니다. 학습률 감쇠는 시간이 지남에 따라 학습률을 낮추는 데 도움이 될 수 있으며 조기 중지는 과적합이 발생하기 전에 교육 프로세스를 중지할 수 있습니다.

  • 24:10:00 이 섹션에서는 기계 학습에서 오버피팅을 처리하는 방법으로 조기 중지의 개념에 대해 설명합니다. 테스트 오류가 증가하기 시작하기 전에 모델의 테스트 오류를 추적하고 모델의 학습을 중지하거나 모델의 손실이 가장 낮은 가중치/패턴을 저장합니다. 과소적합을 처리하는 다양한 방법도 살펴봅니다. 예를 들어 모델에 더 많은 계층/단위를 추가하고, 학습 속도를 조정하고, 더 오래 훈련하고, 전이 학습을 사용합니다. 과대적합과 과소적합 사이의 균형을 강조하고 손실 곡선을 사용하여 시간 경과에 따라 모델의 성능을 평가하는 것의 중요성을 강조합니다. 마지막으로, 모델을 과도하게 정규화하여 과소적합으로 끝나는 것을 방지하는 방법에 대해 논의하고 과소적합과 과적합 사이의 적절한 균형을 달성하는 목표를 강조합니다.

  • 24:15:00 딥 러닝 및 기계 학습을 위한 PyTorch 비디오의 이 섹션에서 강사는 모델의 과적합 및 과소적합의 개념과 이를 처리하는 방법에 대해 설명합니다. 데이터 확대는 교육 데이터 세트의 다양성을 높이기 위해 이미지를 조작하는 과적합을 처리하기 위해 도입된 방법 중 하나입니다. 그런 다음 강사는 계속해서 데이터 증대로 변환을 생성하고 이러한 변환을 사용하여 데이터를 로드하여 훈련 및 테스트 데이터 세트와 데이터 로더를 생성하는 방법을 시연합니다. 이 비디오는 특정 문제에 가장 적합한 것을 찾기 위해 다양한 수정 및 변형을 통해 다양한 모델을 시도하는 것의 중요성을 강조합니다.

  • 24:20:00 비디오의 이 섹션에서 강사는 PyTorch 변환 및 ImageFolder 클래스를 사용하여 데이터 세트 및 데이터 로더를 만드는 과정을 안내합니다. 코드 예제를 제공하고 원하는 경우 시청자가 직접 테스트하도록 권장합니다. 데이터 세트는 교육 및 테스트 폴더 모두에 대해 피자, 스테이크 및 스시 이미지에서 생성됩니다. 또한 강사는 노트북 전체에서 유사한 이름으로 작업할 때 변수 이름을 명확하게 지정하는 것의 중요성에 대해서도 설명합니다. 훈련 데이터 세트와 테스트 데이터 세트 모두에 대해 데이터 로더를 설정하고 훈련 데이터 세트는 사소한 확대 기능으로 보강됩니다. 그런 다음 강사는 시청자에게 작은 VGG 클래스와 훈련 기능을 사용하여 모델 1을 구성하고 훈련할 것을 제안합니다.

  • 24:25:00 PyTorch 전체 과정의 이 섹션에서 강사는 이전과 동일한 아키텍처를 사용하지만 증강된 교육 데이터를 사용하여 새 모델을 만들고 교육하는 과정을 통해 뷰어를 안내합니다. 목표는 이 모델의 성능을 데이터 증대 없이 기준 모델과 비교하는 것입니다. 강사는 작은 VGG 모델에 대해 이전에 만든 클래스를 사용하고 재현성을 위해 수동 시드를 설정합니다. 그런 다음 손실 함수와 옵티마이저를 정의하고 하이퍼파라미터를 설정하고 타이머를 시작합니다. 마지막으로 강사는 이전에 만든 훈련 함수를 호출하고 모델과 데이터 로더를 전달하고 결과를 평가하여 모델을 훈련합니다.

  • 24:30:00 이 섹션에서 강사는 데이터 증대가 있는 두 번째 모델의 교육을 계속하고 손실이 이미 감소하고 있다는 사실로 인해 데이터 증대가 없는 첫 번째 모델만큼 성능이 좋지 않았음을 보여줍니다. 그다지 과적합하지 않았습니다. 그런 다음 강사는 손실 곡선을 그리는 기능을 소개하고 이를 사용하여 두 번째 모델의 성능을 평가합니다. 손실 곡선은 모델이 훈련 손실에 비해 더 높은 테스트 손실로 표시되는 과소적합 및 과적합 가능성을 보여줍니다. 그런 다음 강사는 모델의 과소적합 및 과적합을 모두 해결하기 위해 수행할 수 있는 작업에 대한 질문을 제기하고 더 많은 데이터 가져오기, 모델 단순화, 전이 학습 사용 또는 더 많은 계층 추가와 같은 옵션을 제안합니다.

  • 24:35:00 이 섹션에서 강사는 모델 결과 비교의 중요성에 대해 논의하고 다양한 실험을 추적하기 위해 PyTorch와 TensorBoard, 가중치 및 편향과 같은 몇 가지 도구를 제공합니다. 그러나 그는 이 과정이 현재 순수한 PyTorch에만 초점을 맞출 것이라고 강조합니다. 그런 다음 강사는 각 모델 결과에 대한 데이터 프레임을 사용하여 모델 결과를 나란히 비교할 플롯을 설정합니다. 그는 또한 모델 제로가 개선되는지 확인하기 위해 더 긴 기간 동안 모델 제로를 훈련시키는 실험을 시도할 것을 제안합니다. 궁극적으로 서로 다른 실험과 측정 항목을 시각적으로 비교하는 것은 모델을 개선하는 데 중요합니다.

  • 24:40:00 이 섹션에서 강사는 서브플롯을 사용하여 실험한 두 모델에서 서로 다른 메트릭을 비교합니다. Epoch 수에 대한 범위를 생성한 다음 PLT.subplot() 및 PLT.plot()을 사용하여 열차 손실에 대한 플롯을 생성합니다. 훈련 및 테스트 데이터 모두에 대해 테스트 손실 및 정확도에 대해 동일한 작업을 수행합니다. 강사는 데이터 증대를 구현한 모델 1이 이 단계에서 과대적합된 것 같고 모델 0이 손실 측면에서 더 나은 성능을 보인다고 지적합니다. 강사는 비교할 모델이 더 많으면 잠재적으로 이것을 함수로 바꿀 수 있다고 제안하지만 TensorBoard, 가중치 및 편향, MLflow와 같은 도구가 수많은 실험을 수행할 때 이러한 그래프를 이해하는 데 도움이 될 수 있다고 언급합니다.

  • 24:45:00 이 섹션에서 연사는 훈련 데이터 세트가 아니라 테스트 데이터 세트에서 모델이 얼마나 잘 수행되는지에 따라 모델을 평가하는 것의 중요성에 대해 논의합니다. 그들은 교육 데이터 세트의 지표가 좋지만 궁극적인 목표는 본 적이 없는 데이터에서 모델이 잘 수행되도록 하는 것이라고 제안합니다. 화자는 더 나은 결과를 얻기 위해 모델을 더 오래 훈련하고 각 레이어에 더 많은 히든 유닛을 추가할 것을 권장합니다. 그런 다음 음식 인식 앱을 예로 사용하여 교육 또는 테스트 데이터 세트에 없는 사용자 지정 이미지에 대한 예측을 수행하는 방법을 시연합니다. 맞춤 이미지를 다운로드하고 훈련된 PyTorch 모델을 사용하여 예측하는 워크플로를 설명하지만 현재 모델의 성능이 좋지 않을 수 있음을 주의합니다.

  • 24:50:00 이 섹션에서 강사는 피자의 사용자 지정 이미지를 다운로드하고 학습한 모델을 사용하여 예측을 위해 준비하는 방법을 보여줍니다. 이미지는 원시 GitHub URL을 사용하여 다운로드되고 데이터 폴더에 저장됩니다. 강사는 사용자 지정 이미지가 모델을 교육하는 데 사용된 데이터와 동일한 형식, 특히 데이터 유형이 torch float 32이고 모양이 64 x 64 x 3인 Tensor 형식이어야 한다고 말합니다. 이들은 토치 비전 패키지와 JPEG 또는 PNG를 3차원 RGB 또는 그레이스케일 텐서로 읽는 read_image 함수를 사용하여 이미지를 PyTorch로 로드하는 방법을 보여줍니다.

  • 24:55:00 이 섹션에서 강사는 torch vision.io를 사용하여 사용자 정의 이미지를 PyTorch로 읽고 이를 텐서로 변환하는 방법을 시연합니다. 또한 모양 및 데이터 유형과 같은 이미지에 대한 메타데이터를 얻는 방법도 보여줍니다. 강사는 모델을 통해 이미지를 전달하기 전에 크기를 조정하고 float32로 변환하고 올바른 장치에 넣어야 할 수도 있다고 말합니다. 다음 섹션에서는 PyTorch 모델을 사용하여 사용자 지정 이미지에 대한 예측을 수행하는 방법을 시연할 계획입니다.

파트 26

  • 25:00:00 이 섹션에서 강사는 딥 러닝에서 데이터 유형 및 모양의 중요성과 이와 관련된 오류를 수정하는 방법에 대해 설명합니다. 강사는 이미지에 대한 예측을 시도하지만 사용자 지정 데이터가 모델이 원래 훈련된 것과 동일한 데이터 유형이 아니기 때문에 오류가 발생합니다. 사용자 지정 이미지 텐서를 다시 생성하고 이를 토치 플로트 32로 변환하여 오류를 수정하는 방법을 보여줍니다. 그런 다음 강사는 사용자 지정 이미지의 모양과 관련된 또 다른 문제에 직면하고 이미지 크기를 조정하는 변환 파이프라인을 만들어 오류를 수정하는 방법을 보여줍니다. 모델이 학습된 것과 동일한 크기입니다.

  • 25:05:00 이 섹션에서 강사는 PyTorch의 변환 패키지를 사용하여 입력 이미지를 변환하고 딥 러닝 모델에서 사용할 수 있도록 준비하는 방법을 보여줍니다. 사용자 지정 이미지에 변환 파이프라인을 적용하여 이미지가 압축되고 픽셀화되는 방법을 보여줍니다. 강사는 이것이 잠재적으로 모델의 정확도에 영향을 미칠 수 있다고 지적하고 성능을 향상시키기 위해 더 큰 이미지 크기로 실험할 것을 권장합니다. 또한 추론을 위해 모델을 통과하기 전에 사용자 지정 이미지에 배치 차원을 추가하는 것을 포함하여 텐서 차원이 모델의 요구 사항과 일치하는지 확인하는 것의 중요성에 대해 논의합니다.

  • 25:10:00 비디오의 이 섹션에서 발표자는 PyTorch 모델을 사용하여 사용자 지정 이미지 데이터를 예측하는 방법을 시연합니다. 오류를 방지하기 위해 데이터 형식을 올바르게 지정하고 모델이 훈련된 것과 동일한 데이터 유형, 모양 및 장치를 갖도록 하는 것의 중요성을 강조합니다. 발표자는 모델의 원시 출력 또는 로짓을 softmax 함수를 사용하여 예측 확률로 변환하는 방법도 보여줍니다. 예제에 사용된 모델이 제대로 작동하지 않지만 사용자 지정 데이터에 대한 예측 프로세스가 설명되어 있습니다.

  • 25:15:00 비디오의 이 섹션에서 강사는 사용자 지정 이미지 예측 프로세스를 기능화하는 방법을 보여줍니다. 이 함수는 PyTorch 모델, 이미지 경로, 클래스 이름 목록, 변환 및 장치를 입력으로 사용합니다. TorchVision을 사용하여 이미지를 로드하고, 형식을 지정하고, 예측 레이블을 가져오고, 예측을 제목으로 이미지를 플로팅합니다. 강사는 시청자에게 이 기능을 직접 구축해 보도록 요청한 다음 비디오에서 가능한 구현을 살펴봅니다. 이 섹션에서는 기능이 완전히 구현되지 않았으며 다음 비디오에서 계속됩니다.

  • 25:20:00 이 섹션에서는 PyTorch를 사용하여 사용자 지정 데이터를 예측하는 방법을 살펴봅니다. 먼저 모델이 제대로 처리할 수 있도록 이미지 데이터의 크기를 0과 1 사이로 조정해야 합니다. 그런 다음 변환이 필요한지 확인하고 필요한 경우 이미지를 전달합니다. 다음으로 모델이 올바른 장치에 있는지 확인하고 추론 모드로 설정합니다. 또한 모델이 예측할 배치 크기 1을 반영하기 위해 이미지에 추가 차원을 추가합니다. 그런 다음 예측을 하고 softmax를 사용하여 원시 로짓을 예측 확률로 변환한 다음 argmax를 사용하여 예측 레이블로 변환합니다. 마지막으로 예측 및 예측 확률과 함께 이미지 플롯을 만듭니다. 클래스 이름 목록이 제공되면 함수는 플롯의 각 예측에 대한 클래스 이름을 복제합니다.

  • 25:25:00 이 섹션에서 강사는 미리 훈련된 PyTorch 모델을 사용하여 이미지를 가져오고 예측된 클래스를 표시할 수 있는 함수를 만드는 방법을 설명합니다. 이 함수는 레이블 지정을 위해 클래스 이름 목록을 가져올 수 있으며 예측 확률도 표시합니다. 그런 다음 강사는 사용자 지정 이미지 및 사전 훈련된 모델에서 이 기능을 사용하는 방법을 시연하며 matplotlib과의 호환성을 위해 결과를 CPU에 배치하는 것의 중요성을 설명합니다. 모델의 성능 저하에도 불구하고 강사는 결과 시각화의 힘을 강조합니다.

  • 25:30:00 이 섹션에서 강사는 PyTorch를 사용하여 사용자 지정 데이터를 예측하는 방법을 다룬 이전 섹션의 주요 내용을 요약합니다. 기억해야 할 주요 사항은 올바른 데이터 유형, 올바른 장치 및 올바른 모양을 포함하여 모델의 예상 형식과 일치하도록 데이터를 사전 처리해야 한다는 것입니다. PyTorch에는 다양한 데이터 유형을 처리하기 위한 많은 내장 함수가 있으며 사용자는 필요한 경우 사용자 정의 데이터 세트 클래스를 작성할 수 있습니다. 또한 강사는 모델을 교육할 때 과대적합과 과소적합의 균형이 중요함을 강조하고 연습 및 과외 자료를 포함하여 추가 학습 및 실습을 위한 여러 리소스를 언급합니다.

  • 25:35:00 이 섹션에서 강사는 학습자가 먼저 PyTorch 사용자 정의 데이터 세트 연습 템플릿을 살펴보고 스스로 모든 코드를 작성하도록 권장합니다. 문제가 발생하면 강사가 제공하는 예제 솔루션을 참조할 수 있습니다. 제공되는 솔루션은 작업을 수행하는 한 가지 방법일 뿐이며 사용자는 자유롭게 이를 참조하고 구현과 비교할 수 있습니다. 프로세스 중에 발생한 솔루션 및 오류는 YouTube에서 제공되는 라이브 연습에서도 볼 수 있습니다. 강사는 사용자에게 그들이 많은 연습을 다루었으며 PyTorch 딥 러닝 저장소에서 추가 연습과 솔루션을 확인할 수 있음을 상기시킵니다. 강사는 학습자가 전이 학습, pytorch 모델 실험 추적, pytorch 종이 복제 및 pytorch 모델 배포에 대해 자세히 알아보기 위해 탐색할 수 있는 5개의 챕터가 더 있다고 언급하면서 결론을 내립니다.
 

블랙박스 없는 기계 학습 과정 – 라이브러리 없이 학습



블랙박스 없는 기계 학습 과정 – 라이브러리 없이 학습

00:00:00 - 01:00:00 이 YouTube 동영상에서 강사는 라이브러리에 의존하지 않고 기계 학습에서 코딩하는 방법을 가르치는 No Black Box 기계 학습 과정을 제공합니다. 이 과정은 데이터 수집, 특징 추출 및 시각화를 포함하여 그림을 인식하는 웹 앱 구축과 최근접 이웃 및 K 최근접 이웃과 같은 분류기 구현과 관련된 주제를 다룹니다. 강사는 기계 학습에서 데이터 이해의 중요성을 강조하고 고등학교 수학 및 프로그래밍 경험을 연마해야 하는 사람들을 위한 리소스를 제안합니다. 동영상은 외부 라이브러리 없이 JavaScript를 사용하여 데이터 생성자 역할을 하는 웹 페이지를 만드는 과정을 보여줍니다. 프리젠터에는 실행 취소 버튼과 이름 입력 필드를 만들고 데이터 개체에 그림을 저장하고 사용자 컴퓨터에 경로를 저장하는 방법에 대한 지침도 포함되어 있습니다. 마지막으로 동영상은 node.js에서 데이터 세트 생성기를 만들고 JavaScript를 사용하여 각 샘플과 연결된 데이터를 생성하는 방법을 보여줍니다.

01:00:00 - 02:00:00 이 YouTube 동영상에서 강사는 시청자에게 기계 학습 데이터 세트를 만들고 라이브러리를 사용하지 않고 기능을 추출하는 방법을 가르칩니다. 노드 스크립트와 웹 앱 간에 통신할 수 있는 폴더에 데이터 세트를 저장하고 데이터 뷰어 앱을 만드는 방법을 보여줍니다. 강사는 또한 Google 차트를 사용하여 수집된 데이터를 시각화하는 방법과 차트 및 목록에서 선택한 항목을 식별하고 강조하는 방법을 보여줍니다. 전반적으로 이 비디오는 학습자가 JavaScript만 사용하여 기계 학습 데이터 세트를 만들고 기능을 추출하는 포괄적인 가이드를 제공합니다. 02:00:00 - 03:00:00 "No Black Box Machine Learning Course – Learn Without Library" 비디오는 기계 학습 라이브러리를 사용하지 않고 기능을 기반으로 그림을 분류하는 방법을 보여줍니다. 비디오 제작자는 수동 오류를 방지하기 위해 데이터를 검사하기 위한 빠르고 반응이 빠른 시스템을 갖추는 것이 중요하다고 강조합니다. 차트에 기능을 추가하는 방법, 배경을 숨기는 방법, HTML 및 CSS가 포함된 동적 컨테이너를 사용하여 화면에 예상 레이블을 표시하는 방법을 보여줍니다. 비디오는 정규화 및 표준화와 같은 데이터 스케일링 기술도 다룹니다. 마지막으로 동영상은 K개의 최근접 이웃 분류기를 구현하고 K개의 최근접 이웃 내의 각 레이블 수를 세는 방법을 보여줍니다.

03:00:00 - 03:50:00 YouTube 동영상 "No Black Box Machine Learning Course - Learn Without Libraries"에서는 JavaScript 및 Python과 같은 기계 학습 라이브러리를 사용하지 않고 K-최근접 이웃 분류와 관련된 다양한 주제를 다룹니다. 이 동영상에서는 데이터 세트를 교육 및 테스트 세트로 분할하고, 교육 및 테스트 샘플을 별도로 처리하고, 데이터를 정규화하는 방법을 설명합니다. 또한 강사는 분류기가 작동하는 방식을 이해하는 데 있어 결정 경계의 중요성에 대해 논의하고, JavaScript에서 KNN(K-Nearest Neighbor) 분류기를 구현하는 방법을 시연하고, 기계 학습 라이브러리를 사용하지 않고 픽셀 기반 플롯을 생성합니다. 마지막으로 비디오는 시청자에게 Python의 추가 기능을 탐색하고 지금까지 배운 내용을 반영하도록 요청하는 것으로 끝납니다.

1 부

  • 00:00:00 이 섹션에서 발표자는 라이브러리에 의존하지 않고 코딩에 중점을 둔 블랙박스 없는 기계 학습 과정을 소개합니다. 이 과정은 데이터 수집, 특징 추출 및 시각화를 포함하여 그림을 인식하는 웹 앱을 구축하고 최근접 이웃 및 K 최근접 이웃과 같은 분류기를 구현하기 위한 다양한 주제를 다룹니다. 연사는 기계 학습에서 데이터 이해의 중요성을 강조하고 학생들이 숙제에 집중할 수 있는 짧은 휴식 시간을 제공하는 동시에 고등학교 수학 및 프로그래밍 경험을 연마하기 위한 리소스를 제안합니다. 그런 다음 과정은 신경망과 같은 고급 방법을 다루는 2단계로 이동합니다. 실행 취소 및 저장 기능을 사용하여 데이터 수집을 위한 그리기 앱을 빌드하는 예도 보여줍니다.

  • 00:05:00 비디오의 이 섹션에서 강사는 데이터 세트의 데이터 작성자로 사용될 웹 페이지를 만드는 과정을 안내합니다. 그들은 web이라는 새 폴더를 만드는 것으로 시작하고 이 폴더 안에 Creator.html이라는 웹 페이지인 첫 번째 파일을 만듭니다. 이 페이지에는 기본 HTML, 제목 섹션 및 Styles.css라는 외부 스타일 시트가 포함되어 있습니다. 또한 글꼴 패밀리 및 배경색을 포함하여 페이지의 기본 스타일을 추가합니다. 그런 다음 강사는 계속해서 sketchpad.js라는 외부 JavaScript 파일을 사용하여 스케치패드를 구현하고 캔버스 요소를 보유할 스케치패드 클래스 생성자를 정의합니다.

  • 00:10:00 이 섹션에서 강사는 JavaScript를 사용하여 캔버스를 설정하고 "onmousedown" 이벤트 리스너를 추가하여 마우스 동작을 감지합니다. 캔버스 경계 영역의 사각형을 가져오고 각각 왼쪽과 위쪽을 빼서 마우스 좌표를 얻습니다. 좌표를 정수로 반올림한 후 강사는 캔버스를 클릭할 때 마우스 좌표를 포함하는 경로 배열을 만듭니다. 또한 "그리기"를 false로 설정하고 "경로"를 공백으로 설정했습니다. "onmousemove"에 대해 또 다른 이벤트 리스너가 추가되어 마우스를 움직일 때 경로 배열에 더 많은 포인트를 계속 추가합니다.

  • 00:15:00 이 섹션에서는 화자가 라이브러리를 사용하지 않고 JavaScript를 사용하여 캔버스에 그리는 마우스 이벤트를 구현하는 방법을 설명합니다. 코드는 "onMouseMove" 및 "onMouseUp"에 대한 이벤트 리스너를 사용하여 마우스 움직임을 추적하고 사용자가 그리는 경우 경로에 위치를 추가합니다. 또한 캔버스에 위치를 추가하기 위해 새로운 "마우스 가져오기" 기능이 생성됩니다. 마지막으로 화자는 "그리기" 유틸리티 객체를 생성하여 캔버스에 경로를 지우고 그리는 방법을 보여줍니다.

  • 00:20:00 이 섹션에서 비디오 강사는 모서리 모양 및 직선 끝과 같은 그려진 선과 관련된 몇 가지 문제를 해결하여 외부 라이브러리 없이 드로잉 프로그램을 계속 구축합니다. 그런 다음 여러 경로를 그리는 기능을 만들고 프로그램에 통합합니다. 강사는 뷰포트로 인해 모바일 장치에서 프로그램을 실행할 때 몇 가지 문제에 직면하고 HTML 파일의 헤드 섹션에서 메타 태그를 사용하여 문제를 해결합니다.

  • 00:25:00 이 섹션에서 자습서는 HTML 코드의 뷰포트 메타 태그에 특정 명령을 추가하여 모바일 장치와 같은 작은 화면에 캔버스를 맞추는 데 중점을 둡니다. 그러나 터치에 대한 이벤트 리스너는 마우스에 대한 이벤트 리스너와 다르므로 터치에 대한 이벤트 리스너로 스케치 패드를 수정해야 합니다. 캔버스를 더욱 향상시키기 위해 실행 취소 버튼이 생성되지만 실행 취소 경로가 있는 경우에만 해당됩니다. 캔버스가 비어 있으면 버튼이 비활성화됩니다.

  • 00:30:00 이 섹션에서는 CSS 파일에서 스타일을 변경하여 버튼의 모양을 개선하는 방법을 설명하는 동영상입니다. 내레이터는 호버 효과를 추가하고 비활성화 상태에 대한 스타일을 설정합니다. 다음으로 사용자가 자신의 이름을 입력할 수 있는 입력 필드와 다음 도면으로 이동하는 버튼을 만드는 방법을 배웁니다. 비디오는 또한 이러한 필드에서 데이터를 수집하고 학생, 세션 및 그림의 세 가지 필드가 있는 개체에 데이터를 저장하는 방법을 설명합니다. 마지막으로 내레이터는 그리기 프로세스를 시작하는 데 사용할 시작 기능을 구현하기 시작합니다.

  • 00:35:00 동영상의 이 섹션에서 발표자는 라이브러리를 사용하지 않고 JavaScript를 사용하여 그리기 앱을 구현하는 방법을 보여줍니다. 그들은 자동차, 물고기, 집 등과 같이 그리고자 하는 것의 레이블에 대한 인덱스를 정의하는 것으로 시작합니다. 또한 지침에 대한 필드를 추가하고 첫 번째 드로잉 후 "다음"으로 변경되도록 시작 버튼을 수정합니다. . 그런 다음 색인을 늘리고 다음 레이블을 가져오고 지침을 업데이트하는 "다음" 버튼에 대한 기능을 구현합니다. 또한 특정 레이블에 대한 데이터 개체에 그림을 저장하고 스케치 패드를 재설정하는 공용 메서드를 추가합니다. 발표자는 앱을 테스트하고 데이터 개체가 그림을 수집하고 있음을 보여줍니다.

  • 00:40:00 이 섹션에서는 강사가 사용자가 그린 경로를 자신의 컴퓨터에 로컬로 저장하는 방법을 설명합니다. href 속성이 "데이터 일반 텍스트"로 설정된 "a" 요소를 생성하고 문자열화된 버전의 데이터를 사용하여 URI 구성 요소를 인코딩합니다. 수집된 데이터는 타임스탬프에서 생성된 고유한 이름으로 파일에 JSON 문자열로 저장됩니다. 마지막으로 다운로드 작업이 트리거되어 파일을 다운로드합니다. 강사는 또한 다운로드한 파일로 수행할 작업에 대한 지침을 추가하고 이것이 다음 강의 후에 더 이해될 것이라고 말합니다.

  • 00:45:00 이 섹션에서 강사는 캔버스 대신 문서에 이벤트 리스너를 추가하여 스케치 패드의 잠재적인 문제를 해결하는 방법을 보여줍니다. 또한 시청자에게 다양한 장치에서 시스템을 테스트하고 문제를 보고하거나 솔루션을 제안하도록 요청합니다. 그런 다음 강사는 node.js를 사용하여 수집된 데이터를 보다 관리하기 쉬운 형태로 처리하는 방법을 설명하고 프로젝트 디렉토리로 이동하고 데이터를 저장할 새 폴더를 만드는 방법을 보여줍니다. 마지막으로 그는 거의 500명의 학생 제출물에서 수집한 모든 데이터를 붙여넣는 "원시" 폴더를 만들고 각각 8개의 서로 다른 도면을 포함하고 각 샘플이 도면인 데이터 세트를 생성하기 위해 이러한 파일을 처리하는 방법을 설명합니다.

  • 00:50:00 +Alt+M 및 Json 파일의 형식이 잘 지정됩니다. 이 섹션에서 강사는 nodejs에서 데이터 세트 생성기를 생성하여 샘플을 처리하고 두 개의 개별 폴더(하나는 Json 표현용, 다른 하나는 이미지용)를 사용하여 시각화하는 방법을 설명합니다. 스크립트는 원시 데이터 디렉터리에서 파일 이름을 읽고 콘텐츠를 추출하며 ID, 레이블, 학생 이름 및 학생 ID, 세션 및 도면과 같은 각 샘플에 대한 정보를 저장합니다. 마지막으로 이 섹션에서는 코드를 실행하고 테스트하는 방법을 간략하게 보여주어 지정된 디렉토리에 샘플 Json 파일을 생성합니다.

  • 00:55:00 이 섹션에서는 화자가 JavaScript를 사용하여 각 샘플과 관련된 데이터를 생성하는 방법을 설명합니다. 여기에는 Json 디렉토리에 파일을 작성하고 각 특정 레이블의 도면을 문자열화하는 작업이 포함됩니다. 그런 다음 화자는 공통 디렉토리에서 캔버스와 'draw paths' 기능을 사용하여 각 도면의 이미지 표현을 생성하는 방법을 보여줍니다. 이를 위해 화자는 데이터 세트 생성기에서 사용할 'draw.js' 파일에서 'draw' 객체를 내보내고 노드 패키지 관리자를 사용하여 캔버스 라이브러리를 설치합니다.


2 부

  • 01:00:00 이 섹션에서 강사는 캔버스를 만들고 이를 사용하여 캔버스에 경로를 그린 다음 이미지로 저장하는 방법을 보여줍니다. 또한 새 경로를 그리기 전에 캔버스를 지웁니다. 이미지 파일을 생성한 후 강사는 draw JS에서 모듈이 정의되지 않아 발생하는 그리기 앱의 문제를 수정합니다. 코스 전반에 걸쳐 사용될 구조를 사용하며, 다른 파일에서 상수를 분리하고 이를 요구합니다. 강사는 utils 객체를 생성하고 진행률 인쇄라는 기능을 추가하여 utils라는 새 파일에 진행률 표시기를 추가합니다. 그들은 프로세스 STD 출력을 사용하여 표준 출력을 얻고, 백분율 형식화 기능을 사용하여 백분율을 계산하고, 진행률 표시기를 표시하기 위해 표준 출력에 씁니다.

  • 01:05:00 이 섹션에서는 동영상 제작자가 브라우저에서 읽을 수 있는 방식으로 생성된 데이터 세트를 저장하는 방법을 설명합니다. 그는 노드 스크립트와 웹 앱 간에 통신할 수 있는 파일을 포함할 "JS_objects"라는 폴더를 만듭니다. JS_objects 폴더 내에서 JavaScript 개체를 초기화하는 "samples" JavaScript 파일이 생성됩니다. 비디오 제작자는 또한 데이터 세트에 대한 뷰어 앱을 만들고 기본 HTML 코드로 "viewer.html"이라는 HTML 파일을 만들 것이라고 언급합니다. 파일의 헤드 섹션에는 UTF 문자를 지원하기 위한 메타 태그와 페이지 제목이 포함되어 있습니다. 본문 섹션에는 제목이 "Data Viewer"인 H1 태그와 데이터 집합을 보관할 ID가 "container"인 div가 포함됩니다. "samples" JavaScript 파일은 HTML 파일에 포함되어 있습니다.

  • 01:10:00 이 섹션에서 강사는 학생 ID별로 그룹화된 샘플이 있는 테이블을 만드는 작업을 하고 있습니다. 이를 위해 주어진 키로 배열을 그룹화하는 utils.js 파일에서 "그룹화 기준" 기능을 구현합니다. 그런 다음 그룹을 콘솔에 기록하여 작동하는지 확인합니다. 다음으로 별도의 display.js 파일에 "행 만들기"라는 함수를 만듭니다. 이 함수는 컨테이너, 학생 이름, 샘플을 매개변수로 받아 왼쪽에 이름, 오른쪽에 샘플이 있는 행을 만듭니다. 각 학생 ID를 반복하는 루프를 만들고 "행 만들기" 함수를 호출하고 필요한 매개 변수를 전달하여 데이터를 테이블 형식으로 표시합니다.

  • 01:15:00 이 섹션에서 강사는 레이블이 있는 이미지 행을 동적으로 만들고 CSS에 맞게 정렬하는 방법을 보여줍니다. 먼저 일련의 이미지 샘플을 반복하고 이미지 요소를 만들고 소스 및 스타일 특성을 할당합니다. 그런 다음 레이블 div가 만들어지고 샘플 컨테이너에 추가되는 동안 이미지가 행에 추가됩니다. 그런 다음 샘플 컨테이너는 ID와 클래스가 지정된 div로 래핑됩니다. 그런 다음 강사는 레이블과 이미지를 중앙에 배치하고 더 긴 이름에 줄임표를 추가하도록 CSS를 수정합니다. 마지막으로 div를 만들고 레이블 뒤에 추가하여 샘플 도면에 흰색 배경을 추가합니다.

  • 01:20:00 이 섹션에서는 비디오 제작자가 웹 앱에서 수집된 이미지 샘플의 표시를 수정합니다. 수정에는 흰색 배경, 중앙 정렬 텍스트, 둥근 모서리 및 1픽셀 여백이 있는 샘플 컨테이너 생성이 수반됩니다. 축소판은 100으로 설정되고 행 레이블에는 공간의 20%를 차지하는 속성이 있으며 나머지 8개 샘플은 각각 공간의 10%를 차지합니다. 결과 디스플레이 구조는 깔끔하지만 일부 이미지가 완벽하게 맞지 않습니다. 이는 데스크톱 응용 프로그램용이므로 큰 문제가 되지 않습니다. 또한 작성자는 플래그가 지정된 사용자가 자신의 ID를 사용하여 만든 일부 그림에 블러 필터를 추가합니다. 수집된 도면 중 일부는 인상적인 반면 일부는 데이터를 더욱 어렵게 만드는 잘못된 해석을 포함합니다.

  • 01:25:00 이 섹션에서 YouTube 사용자는 데이터세트의 일부 그림을 살펴보고 품질에 대해 언급하며 일부는 매우 상세하고 만드는 데 오랜 시간이 걸렸음에 주목합니다. 그들은 또한 실행 취소 버튼이 있고 시간 제한이 없기 때문에 그들의 데이터 세트가 Quick Draw 데이터 세트와 다르다고 언급합니다. 즉, 그들의 그림은 평균적으로 더 나은 품질이어야 합니다. 마지막으로 그들은 페이지의 구성과 스타일에 대해 직접 언급합니다.

  • 01:30:00 이 섹션에서는 강사가 라이브러리를 사용하지 않고 샘플에서 기능을 추출하는 방법을 설명합니다. 경로 수와 포인트 수를 추출하는 기능은 features.js라는 파일에 구현되어 있으며 features라는 개체에 추가되어 있습니다. 그런 다음 기능 extractor.js 파일에서 샘플을 읽고 모든 샘플을 반복하고 각 샘플에 대한 경로 수와 포인트 수를 가져와 기능을 추출합니다. 이러한 기능 값은 배열로 결합되어 새 파일에 기록됩니다. 마지막으로 기능 이름과 샘플은 features.json이라는 다른 파일에 결합됩니다. 기능 추출기 스크립트를 실행할 때 로그에 "기능 추출 중"이라고 표시되고 끝에 "완료"가 표시됩니다. 그런 다음 데이터 세트 디렉토리의 결과 기능을 검사할 수 있습니다.

  • 01:35:00 이 섹션에서는 동영상 제작자가 JavaScript 개체를 사용하여 기능 파일에 아직 포함되지 않은 추가 데이터를 보유하는 방법을 설명합니다. 개체를 별도의 JavaScript 파일에 저장하고 웹 응용 프로그램에 필요한 모든 데이터를 추출하는 데 사용할 수 있습니다. 작성자는 또한 너비, 높이, 축 제목 및 핵심 차트 패키지와 같은 옵션을 개체에서 정의할 수 있는 Google 차트를 사용하여 데이터를 시각화하는 방법을 시연합니다. 기능 값과 해당 이름에 대한 두 개의 열이 있는 데이터 테이블이 생성됩니다.

  • 01:40:00 이 섹션에서 동영상은 Google 시각화로 분산형 차트를 만드는 방법을 보여줍니다. 이를 통해 사용자는 탐색기 작업을 사용하여 확대 및 축소하여 데이터의 다양한 기능을 더 자세히 조사할 수 있습니다. 비디오는 또한 재료 차트라고 하는 다른 버전의 Google 차트 라이브러리를 사용하여 각 클래스에 다른 색상을 사용하고 다른 부분의 밀도를 더 잘 시각화하기 위해 투명도를 구현하는 방법을 보여줍니다.

  • 01:45:00 이 섹션에서는 동영상 제작자가 Google 차트를 사용하여 분산형 차트를 만든 다음 자체 JavaScript 코드로 새 차트를 만드는 방법을 보여줍니다. 작성자는 차트의 옵션을 단순화하고 대신 이모지를 사용하도록 색 구성표를 변경하여 레이블이나 범례 없이 데이터 요소를 쉽게 인식할 수 있도록 합니다. 조밀하게 구성된 데이터를 더 잘 볼 수 있도록 차트의 투명도도 조정됩니다.

  • 01:50:00 이 섹션에서 강사는 차트에 콜백 함수를 추가하여 아래 표에서 선택한 항목을 식별합니다. 새 기능은 "handle click"이라고 하며 선택한 항목에 "emphasize" 클래스를 추가하고 "scroll into view" 및 "block center"를 사용하여 자동으로 페이지 중앙으로 스크롤되도록 합니다. 그런 다음 강사는 차트가 페이지의 오른쪽에 있고 다른 콘텐츠는 왼쪽에 있도록 페이지 레이아웃을 수정합니다. 차트는 사용자가 스크롤할 때 움직이지 않도록 위치가 고정되어 있습니다.

  • 01:55:00 비디오의 이 섹션에서 발표자는 차트와 목록에서 항목을 선택하고 선택을 취소하는 방법을 보여줍니다. 스크롤이 발생해야 하는지 여부를 설정하는 매개변수를 지정하고 아무 것도 선택하지 않을 때 발생하는 오류를 처리하는 코드를 추가합니다. 또한 발표자는 클래스를 통해 요소를 강조하는 기능을 추가하여 이미 강조된 클래스를 제거합니다. 마지막으로 차트의 기능을 테스트하고 차트 크기를 조정합니다.


파트 3

  • 02:00:00 이 섹션에서 화자는 스케치 패드를 입력으로 사용하여 분류할 항목을 그리는 방법을 보여줍니다. 컨테이너를 준비하고 스타일을 추가하고 화면 오른쪽과 상단에서 특정 거리에 위치를 고정합니다. 또한 명확한 가시성을 위한 여백과 중앙의 실행 취소 버튼을 제공합니다. 그런 다음 컨트롤 패널과 버튼을 추가하여 테스트 시 성공적으로 작동하는 입력 표시 여부를 전환합니다. 연사는 실수로 이어질 수 있는 수동 오류를 방지하기 위해 데이터를 검사할 때 빠르고 반응이 빠른 시스템을 갖추는 것이 중요하다고 강조합니다.

  • 02:05:00 이 섹션에서는 비디오 강사가 차트에 컨트롤 패널을 추가하는 방법과 입력이 있을 때 배경을 숨기는 방법을 보여줍니다. 그들은 스케치패드 캔버스 윤곽선을 투명하게 만들어 뷰어 HTML에서 배경을 숨기는 솔루션을 보여줍니다. 또한 피처추출기와 같은 방식으로 피처를 추출하는 업데이트 콜백 함수를 추가하여 스케치패드에 무언가를 그리면 즉시 차트에 피처를 표시하는 방법도 보여줍니다. 강사는 피처라고 하는 충돌하는 개체에 문제가 발생했지만 모든 곳에서 피처 함수로 이름을 변경하여 문제를 해결합니다.

  • 02:10:00 이 섹션에서 발표자는 차트에 추가할 수 있는 다이내믹 포인트를 시연합니다. 이것은 속성을 값으로 설정하고 다시 그리면 달성됩니다. 동적 포인트가 차트 클래스에 추가되고 축이 표시되기 전에 그립니다. 드래그하면 포인트가 다른 영역으로 이동하며 검정색 배경에 투명한 흰색 포인트로 그리면 훨씬 더 잘 보입니다. 차트가 확대될 수 있고 포인트가 가장자리를 넘지 않고 계속 표시되므로 값이 커야 합니다.

  • 02:15:00 이 섹션에서 강사는 동적 입력을 숨기고 토글 입력을 누를 때 데이터를 표시하여 작동하는 sketchpad.js에서 업데이트 방법을 트리거하는 방법을 보여줍니다. 트리거 업데이트 방법으로 강사는 노드 특징 추출기에서 새로운 특징을 추출하는 데 사용되는 그림의 너비와 높이를 계산하기 위해 공통 기능 함수에서 너비 및 높이 가져오기 기능을 적용합니다. 강사는 데이터를 추출하고 표시하는 데 동일한 리소스를 사용하도록 HTML을 재구성해야 한다고 제안합니다.

  • 02:20:00 이 섹션에서는 비디오 제작자가 불필요한 코드를 제거하고 새 기능으로 대체하는 방법을 시연하여 보다 일반화되고 다차원적인 포인트 생성 프로세스를 생성합니다. 기능을 재생성하고 기능 이름을 업데이트한 후 데이터로 작업할 때 일반적인 문제인 몇 가지 문제가 있는 샘플 포인트가 관찰됩니다. 작성자는 이상점과 불일치가 데이터에서 예상된다는 점에 주목하고 문제의 원인을 식별하는 데 도움이 되도록 뷰어를 초대합니다.

  • 02:25:00 이 섹션에서는 강사가 기계 학습 라이브러리를 사용하지 않고 기능을 기반으로 도면을 분류하는 방법을 설명합니다. 그들은 입력에서 특징을 추출하고 입력을 분류하기 위해 근처 포인트를 봅니다. 가장 가까운 지점을 찾기 위해 강사는 math.js 차트에서 가장 가까운 얻기 함수를 복사하여 코드에 붙여넣습니다. 그런 다음 함수를 호출하여 도면의 레이블을 식별하고 결과를 기록합니다.

  • 02:30:00 이 섹션에서 비디오 제작자는 HTML 및 CSS가 포함된 동적 컨테이너를 사용하여 화면에 예상 레이블을 표시하는 기능을 추가합니다. 예측된 레이블은 개체가 자동차인지 여부를 표시하는 연결된 텍스트와 함께 흰색 컨테이너에 표시됩니다. 제작자는 프로그램의 예측 기능을 테스트하기 위해 시계 및 연필과 같은 다양한 개체를 그리는 실험을 합니다. 그런 다음 비디오 작성자는 레이블 및 이미지가 있는 동적 점을 사용하여 차트를 업데이트하고 가장 가까운 샘플을 연결하는 선을 그립니다.

  • 02:35:00 이 섹션에서 연사는 기계 학습 프로젝트를 수행할 때 차트에서 데이터를 찌그러뜨리거나 늘리지 않는 것의 중요성에 대해 논의합니다. 차트의 종횡비가 데이터 해석 방식에 어떤 영향을 미쳐 혼란과 오류를 일으킬 수 있는지 보여줍니다. 이 문제를 해결하기 위해 화자는 최대 x 및 y 값에 대한 델타를 계산하고 그에 따라 차트를 조정합니다. 이것은 빈 공간을 생성하지만 데이터의 적절한 시각화와 정확한 기계 학습 결과를 허용합니다.

  • 02:40:00 대본의 이 섹션에서 비디오 제작자는 모든 기능이 분류에서 동일한 의미를 갖도록 기계 학습에서 데이터 확장의 중요성을 강조합니다. 생성자는 특징 추출 중에 데이터가 찌그러지고 늘어져서 특정 특징이 불균등하게 처리되는 방식을 보여줍니다. 공평한 경쟁을 위해 제작자는 기능 값을 0과 1 사이의 범위로 다시 매핑하는 일반적인 기술인 정규화를 도입합니다. 비디오는 이를 달성하기 위해 "utils" 섹션에서 "normalize points"라는 새 기능의 구현을 안내합니다. 리매핑.

  • 02:45:00 이 섹션에서 비디오 자습서는 값을 0과 1 사이로 변경하여 데이터를 정규화하는 방법을 보여줍니다. 함수는 충분히 일반적으로 초기화되고 각 기능의 최소값과 최대값이 계산됩니다. 포인트는 최소값을 빼고 그 차이로 나누어 0과 1 사이가 되도록 수정됩니다. Inverse lerp 함수는 도면에서 추출한 특징을 정규화하기 위해 주어진 값을 백분율로 변환하는 데 사용됩니다. 최소-최대 값은 함수에서 반환되고 JavaScript 개체 파일 중 하나에 작성되어 인터페이스와 통신합니다. 마지막으로 데이터가 생성되고 최소-최대 값이 JavaScript 개체 파일에 포함됩니다.

  • 02:50:00 이 섹션에서 발표자는 Utils 포인트 정규화 기능을 사용하여 분류를 시도하기 전에 포인트를 정규화하는 방법을 설명합니다. 이를 위해 원시 기능 데이터가 로드되어 함수에 대한 입력으로 전달됩니다. 또한 계산할 필요 없이 정규화를 지원하기 위해 최소-최대 값을 전달할 수 있습니다. 또한 정규화가 이상점에 얼마나 민감한지, 이를 자동으로 감지 및 제거하거나 표준화를 다른 데이터 스케일링으로 사용하는 것과 같이 이를 처리하는 방법을 보여줍니다.

  • 02:55:00 이 섹션에서 강사는 각 기능의 평균과 표준편차를 계산하고 평균을 빼고 표준편차로 나누어 다시 매핑하는 표준화 기술에 대해 설명합니다. 이 기술은 이상치에 덜 민감하며 특정한 경우에 더 잘 작동할 수 있습니다. 또한 강사는 K개의 최근접 이웃의 대다수를 기반으로 클래스가 결정되는 K개의 최근접 이웃 분류기를 소개합니다. K개의 최근접 이웃 검색을 허용하도록 코드가 업데이트되고 강사는 K개의 최근접 이웃 내의 각 레이블 수를 세는 방법을 보여줍니다.


파트 4

  • 03:00:00 이 섹션에서 강사는 레이블을 기반으로 샘플 집합의 대부분을 알아내는 과정을 설명합니다. 여기에는 샘플에서 각 레이블의 발생 횟수를 계산하고 다수의 레이블을 가장 높은 수의 레이블로 설정하는 작업이 포함됩니다. 강사는 코드를 업데이트하여 가장 가까운 샘플이 아닌 모든 가장 가까운 샘플을 반환하고 차트에서 선을 그립니다. 그런 다음 다양한 데이터 세트에서 분류기의 기능을 시연하고 시청자가 가장 가까운 이웃 분류기의 다른 변형에 대한 자체 구현을 공유하도록 권장합니다. 마지막으로 강사는 분류기 성능을 객관적으로 평가하기 위해 데이터를 훈련 세트와 테스트 세트로 분할해야 할 필요성을 강조합니다.

  • 03:05:00 이 섹션에서 비디오는 데이터 세트를 교육 및 테스트 세트로 분할하고 파일에 작성하고 JavaScript를 사용하여 코드에서 분할에 대한 상수를 정의하는 방법을 보여줍니다. 훈련 세트는 샘플 수의 50%로 설정하고 훈련 데이터에 대한 테스트 실수에 대해 경고하는 비디오입니다. 테스트를 위해 코드는 모든 테스트 샘플을 반복하고 테스트 목적으로 레이블을 모르는 척하면서 Truth라는 속성에 레이블 값을 저장합니다.

  • 03:10:00 이 섹션에서는 교육 및 테스트 샘플을 개별적으로 처리하는 방법과 데이터를 적절하게 정규화하는 방법을 비디오에서 설명합니다. 연사는 테스트 세트가 무엇인지 모르기 때문에 트레이닝 세트만으로 데이터를 정규화하는 것이 중요하다고 설명합니다. 또한 교육 데이터의 정보만 사용하여 적절하게 분류하는 방법을 살펴보고 분류 기능을 사용하여 알 수 없는 데이터 포인트를 처리하는 방법을 시연합니다.

  • 03:15:00 이 섹션에서 비디오 제작자는 테스트 레이블에 올바른 속성을 추가하고 이 레이블을 이전의 진실 값과 비교하여 정확도를 결정합니다. 테스트 세트가 시작되는 위치를 명확히 하기 위해 부제목도 추가됩니다. 그런 다음 작성자는 통계 필드를 추가하여 K개의 최근접 이웃 분류기의 정확도를 계산하고 표시합니다. 이 정확도는 10개의 최근접 이웃으로 설정되어 39.62%의 정확도가 나옵니다. 매개변수를 가장 가까운 이웃으로 변경하면 정확도가 실제로 훨씬 나빠져 여러 이웃을 고려하는 것이 좋은 생각임을 보여줍니다.

  • 03:20:00 이 섹션에서 강사는 코드를 리팩터링하고 분류기 작동 방식을 이해하는 데 결정 경계의 중요성에 대해 설명합니다. "평가 실행"이라는 새 파일을 만들고 필요한 상수와 유틸리티를 로드합니다. 강사는 분류자를 만드는 방법과 분류자의 정확도를 계산하기 위해 훈련 및 테스트 샘플을 얻는 방법을 설명합니다. 또한 분류자가 데이터 포인트의 분류를 결정하는 방법에 대한 귀중한 정보를 제공하는 결정 경계를 소개합니다. 강사는 결정 경계가 단순히 데이터 포인트의 다양한 기능을 세는 것보다 더 유용하다고 말합니다.

  • 03:25:00 이 섹션에서는 화자가 JavaScript에서 KNN(K-Nearest Neighbor) 분류기를 구현하는 방법을 설명합니다. 코드는 KNN 방법을 사용하여 각 테스트 샘플 포인트에 대한 레이블을 예측하고 올바른 예측 수를 확인하여 정확도를 계산하는 것으로 시작합니다. KN.js 파일은 학습 샘플을 가져오는 클래스와 주어진 포인트를 저장하고 예측하기 위한 K를 정의하기 위해 생성됩니다. 분류를 위한 클래스 코드는 뷰어 HTML에서 KN.js로 복사되고 새 클래스에 맞게 수정됩니다. 실행 평가 스크립트는 이전 분류 방법 대신 KNN 분류자를 사용하도록 업데이트되었습니다. 이러한 방식으로 리팩토링하면 코드를 더 관리하기 쉬워지고 어리석은 실수를 피할 수 있습니다.

  • 03:30:00 이 섹션에서 강사는 픽셀 값을 정규화하고 예측 값을 기반으로 색상 코딩하여 기계 학습 라이브러리를 사용하지 않고 픽셀 기반 플롯을 생성하는 방법을 시연합니다. 그러면 플롯이 PNG 이미지로 저장되고 차트의 배경으로 설정됩니다. 강사는 데이터에 따라 왼쪽 상단 좌표를 가져오고, 데이터 경계에서 픽셀 경계까지의 픽셀 값을 가져오고, 스케일링이 수행된 방법에 따라 이를 나눔으로써 chart.js 파일에서 이 새로운 기능을 구현하는 방법을 보여줍니다. 변형.

  • 03:35:00 비디오의 이 섹션에서 발표자는 이전 섹션에서 생성된 이미지에 대해 논의하고 저해상도 및 스무딩 효과에 대해 설명합니다. 그런 다음 더 이상 데이터 표시가 필요하지 않은 고해상도 이미지를 도입합니다. 그들은 유색 영역이 다른 레이블에 대해 알려주고 다른 영역이 나타나는 것을 관찰하는 것이 얼마나 흥미로운지 설명합니다. 그런 다음 시청자에게 K의 모든 가능한 값에 대한 정확도를 계산하고 최상의 값을 결정하기 위한 선 차트를 만들고 최상의 값에 대한 고해상도 결정 경계 플롯을 생성하도록 요구합니다.

  • 03:40:00 이 섹션에서는 YouTuber가 JavaScript를 사용하여 샘플 데이터를 CSV 형식으로 변환하는 함수를 작성하여 Python용 데이터를 준비하는 방법을 설명합니다. 그들은 헤더와 기능 이름이 있는 샘플 데이터를 Python에서 일반적으로 사용되는 CSV 형식으로 변환하는 toCSV라는 함수를 만듭니다. 교육 및 테스트 데이터 모두에 대한 기능 이름과 레이블이 포함된 CSV를 출력한 다음 라이브러리를 사용하여 K 최근접 이웃의 Python 구현으로 이동합니다. 교육용 CSV 파일을 열고 줄을 읽고 새 줄 문자가 있는 문자열로 표시된 행 배열로 데이터를 구문 분석합니다.

  • 03:45:00 이 섹션에서 강사는 라이브러리를 사용하지 않고 K 최근접 이웃 분류를 위한 데이터를 준비하는 방법을 설명합니다. 데이터는 CSV 파일에서 읽고 Python의 두 개의 빈 배열(특성 값의 경우 X, 레이블의 경우 Y)에 저장됩니다. 강사는 루프를 통해 배열을 채우고 기능 값을 부동 소수점으로 변환하고 레이블을 숫자로 다시 매핑합니다. 다시 매핑은 Python 사전을 사용하여 수행됩니다. 그런 다음 데이터는 250개의 이웃, 무차별 대입 알고리즘 및 균일한 가중치를 포함하여 웹 앱을 에뮬레이션하도록 설정된 매개변수를 사용하여 KNN 분류자 객체에 맞춰집니다. 강사는 Python에서 들여쓰기의 중요성을 강조하고 파일에서 읽기 기능 데이터를 함수로 추출하는 것으로 끝납니다.

  • 03:50:00 이 섹션에서 발표자는 모델에 데이터를 전달하고 점수 함수를 사용하여 정확도를 확인하는 방법을 시연합니다. 또한 시청자가 기능 값과 결정 경계를 시각화하기 위해 matplotlib를 설치하는 것과 같은 Python의 추가 기능을 탐색하도록 권장합니다. 비디오는 시청자에게 지금까지 배운 내용을 반영하고 과정의 다음 단계를 준비하도록 요청하는 것으로 끝납니다.

 

MIT 6.034 "인공 지능". 2010년 가을. 강의 1. 소개 및 범위



1. 소개 및 범위

이 영상은 MIT 6.034 과정 "인공지능"에 대한 소개 영상입니다. 교수는 인공지능의 정의와 중요성을 설명하고, 주제를 이해하는데 중요한 사고와 표현의 모델에 대해 토론을 이어갑니다. 마지막으로 비디오는 성적 계산 방법과 퀴즈 및 기말고사에 수반되는 내용을 포함하여 과정에 대한 간략한 개요를 제공합니다.

  • 00:00:00 이 비디오에서 교수는 인공 지능의 정의와 그 중요성에 대해 논의합니다. 그는 계속해서 그 과정을 수강하는 사람은 누구나 더 똑똑해질 것이라고 말합니다. 교수는 또한 주제를 잘 이해하기 위해 생각의 모델과 그것이 얼마나 중요한지에 대해 논의합니다. 마지막으로 그는 좋은 모델을 만들기 위한 표현의 중요성에 대해 이야기합니다.

  • 00:05:00 이 비디오에서 교수는 자이로스코프가 작동하는 방식과 문제를 그래프로 표현하는 방법을 설명합니다. 그런 다음 그는 많은 사람들이 어린 시절부터 친숙할 수 있는 농부 여우 거위와 곡물 문제를 해결하는 방법을 설명합니다.

  • 00:10:00 이 비디오는 인공 지능 생성 테스트를 포함하여 인공 지능의 개념과 다양한 구성 요소를 소개합니다. 그런 다음 비디오는 Rumpelstiltskin 원칙에 대해 논의합니다. Rumpelstiltskin 원칙은 이름을 지정할 수 있으면 해당 항목에 대한 권한을 얻을 수 있다고 말합니다.

  • 00:15:00 이 비디오는 강력하고 간단하거나 복잡할 수 있는 단순한 아이디어의 개념을 소개합니다. 그런 다음 비디오는 간단한 아이디어의 정의와 예에 대해 논의합니다. 비디오의 요점은 간단한 아이디어가 더 스마트한 프로그램을 구축하는 데 중요하며 과학자와 엔지니어는 이를 연구하는 동기가 다르다는 것입니다.

  • 00:20:00 이 비디오는 1세기 전에 Ada Lovelace가 수행한 작업을 시작으로 인공 지능의 역사에 대해 설명합니다. AI의 현대 시대는 1960년 Marvin Minsky가 작성한 논문으로 시작되었습니다.

  • 00:25:00 "불도저 시대"는 사람들이 컴퓨팅 능력에 무제한으로 접근할 수 있다는 것을 깨닫고 규칙 기반 전문가 시스템을 개발하기 시작한 시대를 말합니다.

  • 00:30:00 비디오는 인간 진화의 역사와 인간이 점진적이고 지속적인 개선을 통해 진화했다는 고등학교 아이디어에 대해 논의합니다. 계속해서 인간의 진화로 이어진 우연한 변화가 어떻게 우연한 진화의 산물이었는지에 대해 논의하고 이러한 변화가 무엇일지 추측합니다.

  • 00:35:00 이 비디오는 인간 지능 개발에 대한 Noam Chomsky의 아이디어를 간략하게 소개합니다. 주요 요점은 언어가 인간 지능의 중심에 있으며 이 과정의 주요 목적은 학생들이 해당 영역에서 기술을 개발하도록 돕는 것이라는 점입니다. 비디오는 또한 과정의 핵심 측면인 암송 및 자습서의 중요성을 언급합니다.

  • 00:40:00 이 비디오는 강의 출석과 성적 간의 상관 관계를 포함하여 MIT 과정에 대한 간략한 개요를 제공합니다. 그런 다음 비디오는 코스에서 학생의 성적을 계산하는 방법에 대한 요약을 제공하며 여기에는 학생의 퀴즈 및 기말 성적을 고려하는 것이 포함됩니다. 마지막으로, 비디오는 학생들에게 압박감이 너무 크고 개선할 기회가 적기 때문에 기말고사를 모두 치르려고 시도하지 말라고 경고합니다.

  • 00:45:00 영상은 퀴즈와 기말고사를 소개하고 퀴즈의 진행 방식과 기말고사 형식을 설명합니다. 비디오는 또한 학생들이 어떻게 강사에게 연락하고 튜토리얼을 예약할 수 있는지 설명합니다.
 

강의 2. 추론: 목표 트리 및 문제 해결



2. 추론: 목표 트리 및 문제 해결

이 비디오는 추론, 목표 트리 및 문제 해결 방법에 대해 설명합니다. "문제 감소"라는 기술을 소개하고 미적분 문제를 해결하는 데 사용할 수 있는 방법을 설명합니다. 또한 휴리스틱 변환을 사용하여 문제를 해결하는 방법과 지식을 사용하여 복잡한 도메인의 문제를 해결하는 방법에 대해서도 설명합니다.

  • 00:00:00 이 비디오는 미적분학 학생들이 사용하는 일반적인 문제 해결 기술인 문제 감소를 소개합니다. 문제 감소의 교육 철학에 대해 논의하고 문제 감소의 예 목록을 제공합니다.

  • 00:05:00 화자가 문제 해결 방법과 다양한 변형이 문제 해결에 어떻게 도움이 되는지 설명합니다. 그들은 문제를 해결하는 데 필요한 네 가지 안전한 변환을 검토합니다. 첫 번째 단계는 모든 안전한 변환을 적용한 다음 테이블에서 문제가 해결되었는지 확인하는 것입니다. 문제가 해결되면 화자는 성공했다고 보고합니다.

  • 00:10:00 비디오는 목표 트리 및 문제 해결의 개념에 대해 논의하고 휴리스틱 변환의 아이디어를 소개합니다. 이러한 변환이 항상 성공적인 것은 아니지만 특정 상황에서는 유용할 수 있습니다.

  • 00:15:00 비디오는 문제를 해결하는 데 사용할 수 있는 다양한 휴리스틱 변환에 대해 설명합니다. 이러한 변환 중 하나는 제가 여러분에게 하나만 보여드릴 변환 계열입니다. 이 변환은 다음과 같습니다: 접선과 X의 함수 적분이 있는 경우 Y 나누기 1 더하기 y 제곱 dy 함수의 적분으로 다시 쓸 수 있습니다. 삼각법 형식에서 다항식 형식으로의 이러한 변환은 우리가 다루고 싶지 않은 모든 삼각법 쓰레기를 제거합니다. 우리에게도 필요한 C가 있고 그것은 당신의 적절한 반사 반응이 될 것입니다. 1 빼기 x 제곱의 형태를 보고 그것을 볼 때 무엇을 합니까? 글쎄, 당신은 할 수 있습니다. Kristen이 제안할 수 있는 것이 있으면 할 수 있는 일이 없습니다. 그녀는 우리의 헝가리어 I가 우리의 어린 차례가 되는 곳이 어디인지에 따라 X명 기호를 포함하는 변환을 적용하도록 제안한다고 말합니다. 이것은 Scylla가 실제로 더 이상 그것을 기억할 필요가 없다는 것을 의미합니다. 앞으로 그녀는 자신의 삶에서 개인적으로 어떤 것도 통합할 필요가 없기 때문입니다. 그녀는 프로그램을 시뮬레이션할 수 있습니다. 이것들은 다항식 형태에서 삼각함수 형태로 돌아가므로 세 가지가 있습니다.

  • 00:20:00 비디오는 추론, 목표 트리 및 문제 해결에 대해 설명합니다. 발표자는 "목표 트리"라는 문제 해결 기법을 소개합니다. 이 트리는 목표가 서로 어떻게 관련되어 있는지 보여주며 어떤 문제를 해결할 것인지 결정하는 데 도움이 될 수 있습니다. 발표자는 이 기술을 "문제 유도 트리" 또는 "트리 목표 트리"라고도 합니다.

  • 00:25:00 이 비디오는 목표 트리 및 문제 해결의 개념을 소개하고 기호를 사용하여 함수 구성의 깊이를 측정하는 방법을 보여줍니다. 그런 다음 비디오는 안전한 변환을 적용하여 적분을 세 부분으로 분할하는 방법과 특정 유리 함수에 대해 작동하는 방법을 보여줍니다.

  • 00:30:00 비디오는 안전한 변환을 구성하여 문제를 해결하는 추론 프로그램에 대해 설명합니다. 프로그램이 특정 문제에 대한 해결책을 찾지 못하고 다시 다른 문제를 해결하기 위해 어떻게 돌아가는지 보여줍니다.

  • 00:35:00 비디오는 Schlegel의 신입생 미적분 문제 모델 뒤에 있는 추론에 대해 논의합니다. 이 모델은 문제를 해결하기 위해 변환에 대한 지식, 오래된 나무의 작동 방식 및 테이블이 필요한 모델입니다. 비디오는 또한 Brett이 제안한 기술인 기능 구성의 깊이가 나무가 깊거나 넓게 자라지 않기 때문에 실제로 중요하지 않은 방법에 대해 언급합니다.

  • 00:40:00 비디오는 문제 해결에서 지식이 어떻게 표현되는지, 특정 변환이 문제를 더 간단하게 만드는 방법에 대해 설명합니다. 또한 복잡한 도메인의 문제를 해결하기 위해 지식을 어떻게 사용할 수 있는지에 대해서도 설명합니다.

  • 00:45:00 연사는 컴퓨터가 어떻게 "지능적"일 수 있는지를 보여주는 것으로 추정되는 프로그램을 시연합니다. 그러나 말하는 사람은 프로그램이 자신과 같은 일을 한다는 사실을 금세 깨닫고 컴퓨터가 진정으로 지능적이지 않다는 것을 깨닫습니다.
 

강의 3. 추론: 목표 트리 및 규칙 기반 전문가 시스템



3. 추론: 목표 트리 및 규칙 기반 전문가 시스템

이 비디오는 규칙 기반 전문가 시스템이 작동하는 방식을 설명합니다. 이 시스템은 보다 전통적인 방법을 사용하여 해결하기 어려운 문제를 해결하도록 설계되었습니다. 이 시스템은 게이트와 게이트로 연결된 여러 규칙으로 구성되어 시스템이 특정 동물을 확실하게 인식할 수 있도록 합니다.

  • 00:00:00 이 비디오는 규칙 기반 전문가 시스템(RBS)이 구축되는 방법을 설명하고 시스템 작동 방식의 예를 제공합니다. RBS는 대수 방정식과 같은 보다 전통적인 방법을 사용하여 해결하기 어려운 문제를 해결하도록 설계되었습니다.

  • 00:05:00 이 비디오에서 패트릭 윈스턴 교수는 추론 프로그램 또는 규칙 기반 전문가 시스템이 작동하는 방식을 설명합니다. 프로그램의 구조는 원하는 결과를 얻기 위해 반복 루프에서 실행되는 4개의 블록으로 매우 간단합니다. 이 프로그램은 과거에 답한 질문에서 힌트를 얻고 재귀를 사용하여 복잡한 결과를 얻기 때문에 간단한 블록과 관련된 문제를 해결할 수 있습니다.

  • 00:10:00 비디오는 어떤 일이 어떻게 이루어졌는지에 대한 질문에 답하기 위해 목표 트리를 사용하는 방법과 and-or 트리를 사용하여 이를 수행하는 방법을 설명합니다. 또한 통합 프로그램이 자체 동작에 대한 질문에 답하기 위해 목표 트리를 사용할 수 있다고 설명합니다.

  • 00:15:00 이 비디오는 복잡한 행동이 프로그램의 복잡성이 아니라 환경의 복잡성의 결과라는 점에 대해 설명합니다. 규칙 기반 전문가 시스템은 간단한 규칙으로 지식을 캡슐화하는 방법으로 60년대 후반에 개발되었으며 오늘날에도 여전히 사용되고 있습니다.

  • 00:20:00 이 YouTube 동영상은 RBSES(순방향 연결 규칙 기반 전문가 시스템)를 사용하여 작은 동물원에서 동물을 식별하는 방법에 대해 설명합니다. RBSES는 게이트로 연결된 여러 규칙으로 구성되어 시스템이 특정 동물을 확실하게 인식할 수 있도록 합니다.

  • 00:25:00 이 비디오는 개체가 특정 유형의 동물인지 여부를 결정하기 위해 가설에서 거꾸로 진행하여 규칙 기반 전문가 시스템(RBE)이 작동하는 방식을 설명합니다.

  • 00:30:00 포르투갈 건축가 Siza가 설계한 것과 유사한 주택을 설계하기 위해 규칙 기반 전문가 시스템이 만들어졌습니다. 이 시스템은 식료품점 포장업자가 말하는 내용을 if-then 규칙으로 변환하여 지식 엔지니어가 이해할 수 있도록 합니다.

  • 00:35:00 이 비디오에서 패트릭 윈스턴 교수는 특정 사례의 필요성과 휴리스틱 사용을 포함하여 지식 공학 원리에 대해 논의합니다. 그는 또한 휴리스틱 2번인 두 객체가 같은지 다른지에 대한 질문을 문제 해결에 어떻게 사용할 수 있는지에 대한 예를 제공합니다.

  • 00:40:00 발표자는 인간 지능을 향상시킬 수 있는 세 가지 방법, 즉 규칙 기반 시스템 구축, 목표 기반 프로그램 개발 및 통합 프로그램 사용에 대해 논의합니다. 휴리스틱 세 번째는 규칙이나 목표를 따르지 않을 때 시스템이 깨져서 추가 지식이 필요함을 나타냅니다. 발표자는 프로그램이 환자에게 페니실린 통을 처방한 사례를 논의함으로써 이를 입증합니다.

  • 00:45:00 이 비디오는 목표 트리 및 규칙 기반 전문가 시스템을 통한 추론이 작동하는 방식을 설명합니다. 두 가지 예에서 시스템은 이야기를 읽고 행동의 결과를 결정할 수 있습니다.
 

강의 4. 검색: 깊이 우선, 힐 클라이밍, 빔



4. 검색: 깊이 우선, 힐 클라이밍, 빔

이 YouTube 비디오에서 Patrick Winston은 깊이 우선, 힐 클라이밍, 빔 및 베스트 우선 검색을 비롯한 다양한 검색 알고리즘에 대해 설명합니다. 그는 지도를 예로 들어 각 알고리즘의 장점과 한계를 보여주고 다양한 검색 방법을 이해하면 문제 해결 능력을 어떻게 향상시킬 수 있는지 보여줍니다. Winston은 또한 Macbeth 이야기에 대한 질문에 답하기 위해 Genesis 시스템을 사용하여 지능형 시스템에서 검색 알고리즘을 적용하는 방법에 대해 논의합니다. 그는 또한 Pyrrhic 승리의 개념과 검색 프로그램이 그래프를 살펴보고 결과를 영어로 보고함으로써 그러한 상황을 발견할 수 있는 방법을 소개합니다. 전반적으로 비디오는 검색 알고리즘에 대한 포괄적인 개요와 실제 시나리오에서의 실용적인 사용을 제공합니다.

  • 00:00:00 이 섹션에서 Patrick Winston은 다양한 검색 방법과 이러한 검색 방법이 우리 자신의 문제 해결 능력과 어떤 관련이 있는지에 대해 설명합니다. 그는 지도에서 한 지점에서 다른 지점으로 최적의 경로를 찾는 예를 통해 좋은 검색 알고리즘의 중요성을 보여줍니다. 그는 또한 가능한 모든 경로를 탐색하는 대영 박물관 검색의 개념을 소개하지만 이 방법은 효율적이지 않다고 지적합니다. 계속해서 깊이 우선, 언덕 오르기, 빔 검색 및 다양한 시나리오에서 사용할 수 있는 방법에 대해 논의합니다. 그는 다양한 검색 알고리즘을 이해하면 문제 해결에 대한 직관을 개발하는 데 도움이 될 수 있으며 우리의 두뇌가 문제를 해결하는 방법에 대한 통찰력을 제공할 수 있다고 강조합니다.

  • 00:05:00 이 섹션에서는 지도의 예를 사용하여 깊이 우선, 힐 클라이밍 및 빔 검색의 개념을 소개합니다. 대영 박물관 알고리즘은 지도에서 자신의 꼬리를 물지 않고 가능한 모든 경로를 찾을 수 있는 방법을 설명하는 데 사용됩니다. 검색은 지도를 통해 표현되지만 지도에 국한되지 않고 실제로 결정을 내리려고 할 때 이루어지는 선택에 관한 것임을 분명히 합니다. 깊이 우선 검색은 표시된 검색 중 하나이며, 일심 방식으로 질주하고 경로를 선택하고 막 다른 골목에 직면했을 때 역 추적하는 것으로 구성됩니다. 알고리즘을 보다 효율적으로 만드는 방법으로 역추적 프로세스도 도입됩니다.

  • 00:10:00 이 섹션에서는 비디오에서 두 가지 주요 검색 알고리즘인 깊이 우선 검색과 너비 우선 검색에 대해 설명합니다. 깊이 우선 검색은 선택적인 역추적 기술과 함께 사용하는 것이 가장 좋습니다. 목표에 이르는 경로를 놓치는 것을 방지할 수 있기 때문입니다. Breadth-first Search는 레벨별로 트리 레벨을 구축하고 목표에 이르는 경로를 완성합니다. 그런 다음 비디오는 샘플 문제에서 두 검색 알고리즘을 테스트하고 시작 위치를 이동하고 그에 따라 검색을 조정합니다. 고려 중인 경로를 나타내는 대기열을 활용하여 검색 알고리즘을 시연하기 위해 순서도가 도입되었습니다.

  • 00:15:00 이 섹션에서 발표자는 깊이 우선 검색 알고리즘의 작동 방식을 설명합니다. 알고리즘은 대기열을 초기화하고 대기열의 첫 번째 경로를 확장하는 것으로 시작합니다. s를 확장한 후 화자는 두 경로를 얻습니다. s는 a로 이동하고 s는 b로 이동합니다. 깊이 우선 검색의 경우 알고리즘이 검색 트리로 계속 내려갈 수 있도록 새로운 확장 경로가 대기열 앞에 배치됩니다. 발표자는 또한 너비 우선 검색이 깊이 우선 검색과 동일한 알고리즘을 사용하며 한 줄을 변경하여 새로운 경로를 대기열의 앞쪽이 아닌 뒤쪽에 배치한다고 설명합니다.

  • 00:20:00 이 섹션에서는 Breadth-First Search의 한계와 이를 개선하는 방법에 대해 알아봅니다. 이 알고리즘은 비효율적인 것으로 간주되어 목표에 가까워지는지 멀어지는지 알 수 없습니다. 또한 동일한 노드로 이동하는 경로를 두 번 이상 확장하는 경우가 많으므로 이를 피해야 합니다. 마지막 노드가 이전에 확장되지 않은 경우 경로를 확장하지 않도록 알고리즘을 수정하여 중복된 경로에서 시간을 낭비하지 않도록 할 수 있습니다. 이 방법을 사용하면 검색 효율성과 경로 품질이 크게 향상됩니다.

  • 00:25:00 이 섹션에서 비디오는 노드까지의 거리를 고려하여 목표 노드를 찾기 위한 보다 정보에 입각한 접근 방식으로 Hill Climbing 검색을 탐색합니다. 깊이 우선 검색과 유사하게 Hill Climbing은 옵션을 어휘적으로 나열하고 목표 노드에 대한 근접성을 기준으로 연결을 끊습니다. 이렇게 하면 항상 최적의 경로는 아니지만 역추적이 없는 직선 경로가 생성됩니다. 이 비디오는 Hill Climbing이 Depth-First Search에 비해 더 적은 인큐잉과 더 직접적인 경로를 생성함을 보여줍니다. 비디오는 가능한 경우 검색 알고리즘에서 휴리스틱을 사용하도록 권장합니다.

  • 00:30:00 이 섹션에서 강사는 휴리스틱을 사용하여 정보에 입각한 검색을 허용하는 Breadth-first Search를 보완하거나 추가하는 Beam Search 기술에 대해 설명합니다. Beam Search는 각 레벨에서 고려해야 할 경로의 수를 제한하고 추가 정보 또는 휴리스틱한 거리 측정을 활용하여 목표에 가장 근접할 수 있는 상위 2개의 경로만 유지합니다. 강사는 힐 클라이밍이 모든 것을 일직선으로 유지하도록 정렬된 목표까지의 거리를 고려하여 줄의 맨 앞에 새로운 경로를 추가하는 정보에 입각한 검색이라고 언급합니다.

  • 00:35:00 이 섹션에서 발표자는 산과 같은 연속적인 공간에서 사용할 수 있는 두 가지 추가 검색 알고리즘인 Beam Search와 Best-first Search에 대해 설명합니다. Beam Search는 w 최적의 경로를 솔루션으로 선택하고 유지하는 반면 Best-first Search는 항상 목표에 가장 가까운 리프 노드에서 작업하고 검색 트리에서 건너뛸 수 있습니다. Hill Climbing은 로컬 최대값에 갇히거나 평평한 지역에서 이동할 수 없는 등 연속적인 공간에서 문제에 직면할 수 있습니다. 마지막으로 화자는 날카로운 다리가 있을 수 있는 고차원 공간에서 언덕 오르기의 추가 문제를 설명합니다.

  • 00:40:00 이 섹션에서는 비디오에서 모델링 인텔리전스와 지능형 시스템 구축에 필요한 검색 알고리즘에 대해 설명합니다. 화자는 지형도의 예를 사용하여 실제로는 그렇지 않은데도 우리가 정상에 있다고 생각하도록 속는 방법을 설명합니다. 이것은 계획을 세우고 선택을 평가하는 데 필요한 검색의 개념으로 이어집니다. 그런 다음 화자는 창세기 시스템을 사용하여 검색 알고리즘을 사용하여 Macbeth 이야기에 대한 질문에 답하는 방법을 보여줍니다. 시스템은 정보를 흡수하고, 정교화 그래프를 구축하고, 복수 및 기타 상위 개념과 관련된 스토리의 패턴을 검색합니다.

  • 00:45:00 이 섹션에서 Patrick Winston은 Pyrrhic 승리의 개념에 대해 설명합니다. 처음에는 모든 것이 잘 진행되는 것처럼 보이지만 결국에는 부정적인 결과를 초래하는 상황입니다. 그는 검색 프로그램이 그래프를 통해 이러한 정보를 발견하고 해당 정보를 기반으로 질문에 답할 수 있는 방법을 보여줍니다. 프로그램은 명시적 진술과 if/then 규칙의 조합을 사용하여 이러한 그래프를 만들고 정보를 영어로 보고합니다. Winston은 또한 이러한 프로그램이 정보를 생성한 검색에 대해 보고함으로써 상식적인 답변과 더 높은 수준의 생각을 생성할 수 있다고 언급합니다. 마지막으로 그는 파서 시스템에서 생성된 언어 출력을 사용하여 Macbeth의 성격과 동기에 대한 질문에 답하는 시스템의 능력을 보여줍니다.
 

강의 5. 검색: Optimal, Branch and Bound, A*



5. 검색: Optimal, Branch and Bound, A*

이 비디오는 시카고와 로스앤젤레스 사이의 66번 국도의 예를 중심으로 두 장소 사이의 최단 경로를 찾기 위한 여러 검색 알고리즘에 대해 설명합니다. 이 비디오는 휴리스틱 거리의 개념을 소개하고 언덕 오르기, 빔 검색, 분기 및 경계와 같은 다양한 검색 알고리즘의 예를 제공합니다. 발표자는 검색을 최적화하기 위해 A* 알고리즘에서 허용 가능하고 일관된 휴리스틱을 사용하는 것의 중요성을 강조합니다. 또한 비디오는 최단 경로의 하한선을 결정하기 위해 확장된 목록과 항공 거리를 사용하는 효과에 대해 설명합니다. 궁극적으로 비디오는 다음 강의에서 A* 알고리즘의 추가 개선 사항에 대해 논의하겠다는 약속으로 끝납니다.

  • 00:00:00 이 섹션에서 교수는 시카고와 로스앤젤레스 사이의 루트 66의 예를 중심으로 두 장소 사이의 최단 경로를 찾는 방법에 대해 논의합니다. 그는 전국으로 군대를 신속하게 이동할 수 있는 독일군의 능력을 복제하기를 원했던 Eisenhower 대통령의 주간 고속도로 시스템 창설에 대해 언급합니다. 그런 다음 교수는 휴리스틱 거리의 개념과 그것이 항상 사실은 아니지만 최상의 경로를 찾는 데 어떻게 도움이 될 수 있는지 소개합니다. 그는 또한 목적지에 가까워짐으로써 최상의 경로를 찾는 것을 목표로 하는 언덕 오르기 및 빔 검색과 같은 다양한 검색 알고리즘의 예를 제공합니다.

  • 00:05:00 이 섹션에서 교수는 답을 아는 사람에게 질문하여 휴리스틱 거리의 개념과 문제 해결의 원리에 대해 논의합니다. 지도에서 최단 경로를 찾는 예를 들어 교수는 Juana가 제안한 경로를 따르라고 제안하지만 다른 모든 가능한 경로가 제안된 경로보다 길어지는 것을 확인하여 확인합니다. 교수는 경로 길이가 Juana가 제안한 경로 길이와 일치할 때까지 경로 길이를 계산하고 확장할 최단 경로를 선택하는 과정에 대해 자세히 설명합니다.

  • 00:10:00 이 섹션에서 발표자는 오라클 없이 최단 경로를 찾는 방법에 대해 설명합니다. 접근 방식은 목표에 도달할 때까지 지금까지 최단 경로를 확장하는 것입니다. 화자는 길이가 음수가 아닌 경로를 고려하여 최단 경로를 찾는 과정을 설명하는 예를 제공합니다. 이 접근 방식은 지금까지 수행한 작업 중 낭비되는 작업이 있는지 확인하고 그렇지 않은 경우 경로 길이가 가장 짧은 것입니다. 화자는 이 접근 방식이 최단 경로를 찾을 수 있지만 길이가 0인 경우 다른 경로가 있을 수 있다고 설명합니다.

  • 00:15:00 비디오의 이 섹션에서 연사는 더 복잡한 지도에서 최단 경로를 찾기 위해 분기 및 경계를 사용하는 방법을 보여줍니다. 순서도 꾸미기를 언급하고 대기열을 초기화하고 대기열의 첫 번째 경로를 테스트하고 승자가 아닌 경로를 확장하는 과정을 설명합니다. 연사는 분기 및 경계 접근 방식이 많은 경로를 대기열에 넣고 최적이 아닌 많은 경로를 확장하지만 이전에 확장되지 않은 경로만 확장하여 개선할 수 있다고 언급합니다. 화자는 최적의 경로를 찾기 위해 확장된 경로 접근 방식만 사용하는 것의 중요성을 강조합니다.

  • 00:20:00 이 섹션에서는 분기 제한 알고리즘에 대한 조정 개선으로 확장 목록의 개념을 소개합니다. 확장 목록은 알고리즘이 이미 확장되었고 이미 동일한 지점에 도달한 경로보다 경로 길이가 더 긴 경로를 확장하지 못하도록 합니다. 확장된 목록을 유지하면 트리의 방대한 영역을 정리하여 솔루션에 도달하는 데 필요한 확장의 수를 줄일 수 있습니다. 이전 예와 비교하여 새 알고리즘은 835개가 아닌 38개의 확장만 필요하므로 계산 시간이 크게 절약됩니다.

  • 00:25:00 이 섹션에서는 항공 거리를 사용하여 가능한 최단 경로의 하한선을 결정하는 개념을 소개합니다. 누적 거리와 항공 거리가 추가되어 경로의 하한을 제공합니다. 그런 다음 S에서 G까지의 잠재적 거리가 가장 짧은 경로를 선택하여 시뮬레이션을 시연합니다. 점수가 동점인 경우 어휘적으로 가장 작은 값을 가진 경로가 선택됩니다.

  • 00:30:00 이 섹션에서 발표자는 휴리스틱을 사용하여 그래프 검색 알고리즘의 속도를 높이는 방법에 대해 설명합니다. 허용 가능한 휴리스틱을 사용하는 것은 추정치가 실제 거리보다 작다는 것이 보장되는 경우입니다. 확장 목록은 이러한 하한 휴리스틱 중 하나를 사용하는 것보다 더 유용합니다. 그러나 휴리스틱의 효과는 문제에 따라 다르며 시작 위치의 배치를 변경하면 검색 결과가 변경될 수 있습니다. 궁극적으로 휴리스틱을 사용하면 동일한 노드를 통해 이동을 반복하지 않을 수 있지만 반드시 효율적인 검색에 필수적인 작업을 수행하지는 않는다는 점에 유의해야 합니다.

  • 00:35:00 이 섹션에서는 허용 가능한 휴리스틱과 분기 및 바인딩 알고리즘을 결합한 검색 알고리즘인 A*에 대해 설명합니다. 두 기술을 모두 활용함으로써 A*는 개인의 성과를 크게 향상시킬 수 있습니다. 허용 가능한 휴리스틱은 엄격한 목표를 사용하는 반면 분기 및 범위 알고리즘은 관련된 공간 탐색을 이해합니다. 비디오는 A*가 두 기술을 함께 사용할 때 어떻게 더 효율적으로 문제를 해결할 수 있는지 보여줍니다. 그러나 비디오는 검색이 전통적인 지도를 벗어나면 특정 상황에서 허용 가능성을 불가능하게 만들 수 있다고 지적합니다. 결과적으로 허용 가능한 계층 구조와 A* 알고리즘은 최적의 솔루션을 찾는 데 덜 효과적일 수 있습니다.

  • 00:40:00 이 섹션에서 교수는 A* 알고리즘에서 허용 가능한 휴리스틱의 개념을 설명합니다. 그는 이상한 거리가 있는 지도의 예를 보여주고 허용 가능한 휴리스틱을 사용하는 것이 항상 최단 경로를 찾는 것으로 이어지지 않을 수 있는 방법을 설명합니다. 교수는 허용 가능한 휴리스틱이 지도에서만 작동하고 지도가 아닌 상황에서 알고리즘이 작동하도록 하기 위해 휴리스틱의 허용 가능성보다 더 강력한 것이 필요하다고 강조합니다. 비디오는 다음 강의에서 이 개선 사항에 대해 논의하겠다는 약속으로 끝납니다.

  • 00:45:00 이 섹션에서 강사는 휴리스틱 함수가 A* 알고리즘 내에서 작동하기 위한 요구 사항에 대해 설명합니다. 그는 허용 가능성과 일관성의 개념을 소개하면서 휴리스틱 함수가 맵이 아닌 상황에서 작동하려면 허용 가능하고 일관성이 있어야 한다고 설명합니다. 그는 허용되지만 일관성이 없는 휴리스틱을 사용하면 일관된 휴리스틱이 작동했을 시나리오에서도 알고리즘이 실패할 수 있음을 보여줍니다. 마지막으로 강사는 확장 목록 및 적절한 휴리스틱 함수를 포함하여 A* 알고리즘을 최적화하는 데 사용할 수 있는 모든 이점을 사용하는 것의 중요성을 강조합니다.
사유: