MIT Introduction to Deep Learning (2024) | 6.S191

MIT Introduction to Deep Learning (2024) | 6.S191

AI와 딥러닝의 발전

  • MIT 수업 소개: Alexander Amini가 강사로 참여하며, 빠르게 변화하는 AI 및 딥러닝 분야를 다룰 것임.
  • 지난 8년간 AI와 딥러닝이 과학과 수학 등 다양한 분야에서 혁신을 가져옴.
  • AI가 인간 성능을 초월하여 해결할 수 없는 문제들을 해결하고 있음.

강의의 도전

  • 기초를 다루는 첫 번째 강의가 점점 더 어려워지고 있음.
  • 몇 년 전 소개된 방식과 현재의 변화 비교: 기술 발전 속도가 매우 빠름.
  • 과거에 제작한 비디오가 어떻게 바이럴 되었는지 설명.

딥러닝 기술의 진화

  • 초기 비디오 제작 비용이 약 10,000달러였으나, 현재는 저렴해짐.
  • 오늘날 AI는 훨씬 더 강력한 콘텐츠 생성 가능함.
  • 딥러닝이 일반화되어 누구나 쉽게 접근할 수 있게 됨.

미래 지향적 소프트웨어 개발

  • 사용자가 영어로 명령하면 AI가 코드를 작성할 수 있는 능력 향상됨.
  • 새로운 소프트웨어를 생성하는 데 있어 AI 모델들이 자율적으로 작업 수행 가능함.
  • 코드 블록을 교육하며 사용자에게 각 부분 설명 가능.

기초 교육의 중요성

  • 이 과정은 딥러닝 모델 구축의 기초를 가르치는 것을 목표로 함.
  • 매년 변화하는 기술 환경 속에서 기초 교육이 더욱 중요해짐.

딥러닝의 기초

  • 딥러닝의 개념과 다른 과학적 요소들과의 관계를 이해하는 것이 중요함.
  • 지능의 본질에 대해 생각해보는 것이 필요하며, 인공지능이 아닌 단순한 지능을 정의해야 함.
  • 지능은 정보를 처리하여 미래의 의사결정을 돕는 능력으로 설명됨.

인공지능과 머신러닝

  • 인공지능은 컴퓨터가 정보를 처리하고 미래 결정을 내리는 능력을 부여하는 것임.
  • 머신러닝은 인공지능의 하위 집합으로, 데이터를 통해 정보 처리 및 의사결정 방법을 가르치는 과학임.
  • 딥러닝은 머신러닝의 하위 집합으로 신경망을 사용하여 원시 데이터를 처리함.

강좌 개요 및 구성

  • 이 강좌는 기술 강의와 소프트웨어 실습으로 나뉘어져 있음.
  • 첫 번째 강의에서는 신경망의 기초인 퍼셉트론에 대해 다룸.
  • 각 강의를 마친 후 실제 코드로 배운 내용을 적용할 수 있는 경험 제공.

소프트웨어 실습 및 프로젝트

  • 프로젝트 피치 대회에서 팀당 5분 발표 기회를 제공하며, 우수한 프로젝트에는 상금이 주어짐.
  • 매일 소프트웨어 실습이 진행되며, 기술 강의를 보완함.
  • 첫 번째 실습은 음악 생성에 관한 것으로, 신경망을 구축하여 새로운 곡 작곡 학습.

추가 실습 및 최종 프로젝트

  • 두 번째 실습에서는 얼굴 인식 시스템 구축을 배우고 편향 제거 방법도 학습함.
  • 마지막 실습에서는 대규모 언어 모델을 조정하여 챗봇 개발 및 평가를 진행함.
  • 모든 과정에는 다양한 자원이 지원되며 질문은 Piazza를 통해 가능함.

강사 소개 및 감사 인사

  • 주요 강사는 AA이며, 게스트 강연도 예정되어 있음.

딥러닝의 중요성은 무엇인가?

  • 딥러닝에 대한 관심을 가지는 이유를 이해하기 위해 머신러닝의 과거 방식을 살펴보아야 함.
  • 전통적인 머신러닝은 특징을 수동으로 정의해야 하며, 이는 실용적으로 취약함.
  • 딥러닝은 원시 데이터에서 직접 특징을 학습하는 패러다임 전환을 목표로 함.

얼굴 인식의 예시

  • 얼굴 인식 시 특정 패턴(눈, 코, 귀 등)을 찾아내는 과정 설명.
  • 컴퓨터도 유사한 방식으로 데이터를 분석하여 패턴을 인식함.
  • 딥러닝의 기초가 되는 알고리즘은 수십 년간 존재했지만 최근에 주목받고 있음.

데이터와 컴퓨팅 파워의 발전

  • 현재 사용 가능한 데이터 양이 역사상 가장 풍부함.
  • 딥러닝 알고리즘은 대량의 계산 능력을 요구하며 GPU와 같은 하드웨어 덕분에 발전 가능해짐.
  • 오픈 소스 도구들이 모델 구축과 배포를 용이하게 만들어줌.

신경망의 기본 구성 요소: 퍼셉트론

  • 신경망은 여러 개의 퍼셉트론으로 구성되며, 각 퍼셉트론이 정보를 처리함.
  • 퍼셉트론은 단일 뉴런으로 생각할 수 있으며, 간단한 구조를 가짐.

퍼셉트론 정보 전파 과정

  • 단일 뉴런이 여러 입력(X1, X2 등)을 받아들여 가중치와 곱해짐.
  • 모든 입력값과 가중치를 곱한 후 합산하여 비선형 활성화 함수 통과시킴.

신경망의 입력과 가중치

  • 입력 벡터 X는 모든 입력 X1부터 XM까지 포함되며, 가중치 W는 W1부터 WM까지 포함된다.
  • 바이어스 항 w0를 추가하고 비선형성을 적용하여 활성화 함수를 정의한다.

활성화 함수의 중요성

  • 시그모이드 함수는 일반적으로 사용되는 활성화 함수로, 실수 값을 0과 1 사이로 압축한다.
  • 다양한 비선형 활성화 함수가 있으며, 이들은 신경망에서 중요한 역할을 한다.

비선형성의 필요성

  • 비선형성을 도입함으로써 신경망은 복잡한 데이터 세트를 처리할 수 있다.
  • 선형 함수만으로는 복잡한 문제를 해결할 수 없으며, 비선형성이 필요하다.

신경망의 훈련 및 출력 계산

  • 훈련된 신경망은 주어진 가중치를 기반으로 출력을 계산한다.
  • 입력과 가중치의 내적을 구하고 바이어스를 더한 후 비선형성을 적용하는 과정이 반복된다.

신경망의 시각화

신경망의 기본 개념

  • 신경세포를 정의하는 선을 플로팅하여 2차원 공간에서 새로운 데이터 포인트를 시각화함.
  • 선의 한쪽에 위치한 점이 결과의 부호와 값을 결정함. 예: X1=-1, X2=2일 때 결과는 -6.
  • 시그모이드 함수가 공간을 두 부분으로 나누며, 입력 값에 따라 출력이 0.5보다 작거나 큼.

신경망의 특징 공간

  • 입력이 선의 왼쪽이면 출력은 0.5 미만, 오른쪽이면 0.5 초과임.
  • 이론적으로 신경망의 기능을 완전히 이해할 수 있지만, 실제로는 복잡한 구조를 가짐.
  • 오늘날 신경망은 수백만 또는 수십억 개의 매개변수를 포함하고 있음.

퍼셉트론 이해하기

  • 퍼셉트론 작동 방식을 기억하는 것이 중요하며, 세 가지 단계(내적곱, 바이어스 추가, 비선형성 적용)가 있음.
  • 각 선에는 관련된 가중치가 있으며, 바이어스 항목은 생략 가능함.
  • 최종 출력은 G(Z), 즉 비선형 활성화 함수가 Z에 적용된 것임.

다중 출력 함수 구현하기

  • 다중 출력을 원할 경우 두 개의 뉴런을 사용하여 각각 독립적으로 예측함.
  • 각 뉴런은 고유한 가중치를 가지며 서로 독립적으로 작용하지만 후속 레이어에서 소통 가능함.
  • 프로그래밍 관점에서 신경망 구축 과정을 설명하며 정보를 전파하는 방법을 정의해야 함.

신경망 레이어 정의하기

  • 레이어는 뉴런 집합으로 구성되며 정보 전파 방식을 정의해야 함.
  • 모든 뉴런은 가중치와 바이어스를 가지고 있으며 이를 먼저 정의해야 함.
  • 입력과 가중치 간 내적곱 후 바이어스를 추가하고 비선형성을 적용하여 단일 레이어 신경망 생성 가능함.

현대 딥러닝 도구 활용하기

  • 현대 딥러닝 라이브러리는 많은 기능을 이미 구현해 주므로 기초 이해가 중요함.

신경망의 기본 구조

  • 밀집층을 초기화하는 예시로, 두 개의 뉴런이 세 개의 입력을 받는 구조 설명.
  • 단일 층 신경망 소개, 입력과 출력 사이에 숨겨진 층이 존재함.
  • 두 개의 가중치 행렬(W1, W2)을 사용하여 입력에서 출력으로 변환.

비선형성과 뉴런

  • 숨겨진 층은 비선형성을 포함해야 하며, 이는 중요한 요소임.
  • 비선형성이 없으면 큰 선형 함수가 되어버림.

숨겨진 층의 뉴런 계산

  • Z2라는 두 번째 뉴런을 예로 들어 DOT 곱과 바이어스를 통해 결과를 계산.
  • 다른 뉴런(Z3)은 같은 방식으로 계산되지만 가중치는 다름.

완전 연결층과 코드 구현

  • 모든 입력이 출력에 연결된 완전 연결층 설명.
  • 비선형성 함수는 각 층마다 달라질 수 있으며, 일반적으로 편리함 때문에 동일하게 유지됨.

심층 신경망 구축

  • 심층 신경망은 여러 층을 쌓아 올려 계층적 모델 생성.
  • 코드에서 TensorFlow 레이어를 쌓아 깊이를 더하는 방법 설명.

신경망 적용 사례: 수업 통과 여부 예측

  • AI 시스템을 통해 "수업을 통과할 것인가?" 질문 해결하기 위한 접근법 소개.

신경망을 통한 수업 통과 확률 예측

입력 데이터와 초기 예측

  • 신경망은 강의 참석 횟수와 최종 프로젝트에 소요된 시간을 입력으로 사용.
  • 초기 예측 결과, 수업 통과 확률이 10%로 낮게 나타남.

신경망 학습 필요성

  • 신경망이 잘못된 예측을 한 이유는 훈련되지 않았기 때문.
  • 데이터를 통해 신경망에게 올바른 정보를 가르쳐야 함.

손실 함수와 모델 개선

  • 잘못된 결정 시 신경망에 피드백을 제공하여 학습하도록 해야 함.
  • 실제 값과 예측 값 간의 차이를 계산하여 손실을 최소화하는 것이 중요함.

다양한 학생 데이터 활용

여러 학생 데이터 적용

  • 단일 학생이 아닌 다수의 학생 데이터를 사용하여 훈련 진행.
  • 모든 입력에 대해 평균적으로 손실을 최소화하는 네트워크를 찾는 것이 목표임.

이진 분류 문제 해결

  • 이진 분류 문제에서 softmax 함수 및 교차 엔트로피 함수 사용.
  • 손실 함수는 두 확률 분포 간의 거리를 측정하여 피드백 제공.

실제 값 예측 및 손실 계산

실수 값 출력 예측

  • 클래스 성적과 같은 실수 값을 예측하기 위해 다른 손실 함수를 사용할 수 있음.
  • 평균 제곱 오차를 통해 실제 값과 예측 값 간의 차이를 계산함.

통합 문제 해결 접근법

  • 모든 데이터를 기반으로 최적의 가중치 벡터 W를 찾아야 함.
  • W 벡터는 신경망 성능 평가 및 손실 계산에 중요한 역할을 함.

손실 경관 시각화

가중치 조정 및 시각화

  • 두 개의 가중치를 가진 경우, 손실 경관을 2차원 공간에서 시각화 가능.

손실 함수와 최적화 방법

  • W1과 W2에 대한 손실을 최소화하는 방법을 찾는 것이 중요하다.
  • 특정 지점에서 경량의 기울기를 계산하여 경향성을 파악한다.
  • 기울기의 반대 방향으로 작은 단계를 반복하여 손실을 줄인다.

경량 하강법 요약

  • 알고리즘은 무작위로 위치를 초기화하고 손실의 기울기를 계산한다.
  • 작은 단계로 기울기의 반대 방향으로 이동하며 반복한다.
  • 네트워크가 수렴할 때까지 이 과정을 계속 진행한다.

코드와의 유사성

  • 신경망 훈련 시 가중치를 무작위로 초기화해야 한다.
  • 손실을 계산하고 기울기를 구한 후, 학습률에 따라 방향을 정한다.
  • 기울기는 손실이 모든 가중치에 대해 어떻게 변화하는지를 알려준다.

역전파 과정 설명

  • 가장 간단한 신경망 구조인 하나의 뉴런으로 시작한다.
  • W2에 대한 손실의 기울기를 계산하여 영향을 분석한다.
  • 체인 룰을 적용해 가중치 W1에 대해서도 같은 과정을 반복한다.

뉴런과 퍼셉트론 차이

  • 뉴런과 퍼셉트론은 동일한 개념으로 사용된다.

신경망의 역전파 이해

  • 역전파 알고리즘은 신경망의 가중치를 조정하여 손실을 개선하는 방법이다.
  • 이론적으로 간단하지만 실제 구현에서는 복잡한 문제를 동반한다.
  • 신경망 최적화는 계산 집약적이며, 실질적인 어려움이 많다.

손실 경관 시각화

  • 깊은 신경망의 손실 경관은 매우 복잡하게 나타난다.
  • 초기값 설정이 중요하며, 잘못된 시작점에서 글로벌 솔루션에 도달하지 못할 수 있다.
  • 최적화를 용이하게 하기 위해 부드러운 손실 경관을 가진 신경망 구조가 필요하다.

학습률 설정의 중요성

  • 학습률은 너무 작으면 지역 최소값에 갇히고, 너무 크면 발산할 수 있다.
  • 이상적인 학습률은 지역 최소값을 피하면서도 글로벌 최소값으로 수렴해야 한다.
  • 다양한 학습률을 시도해보는 것이 유용하다.

적응형 학습률 알고리즘

  • 모델과 데이터에 따라 학습률을 조정하는 방법이 필요하다.
  • 여러 가지 아이디어와 절차가 존재하며, 이를 실험해보는 것이 권장된다.
  • 다양한 학습률 설정 방법을 통해 효과를 비교하고 관찰할 수 있다.

무한 차원의 탐색 문제

  • 모든 가중치가 무한대까지 가능하므로 단순 검색 방식으로 해결하기 어렵다.
  • 고차원 공간에서 모든 가능한 가중치를 테스트하는 것은 비현실적이다.

옵티마이저와 배치 데이터

  • 모델 번호 하나는 옵티마이저를 정의하며, 이는 경량 경사 하강법(SGD)으로 불린다.
  • 다양한 적응형 옵티마이저를 테스트하여 훈련 절차에 미치는 영향을 이해해야 한다.
  • 배치 데이터를 사용하여 모든 데이터를 한 번에 보지 않고 훈련하는 방법을 논의한다.

경량 경사 하강법의 필요성

  • 전체 데이터 세트에서 평균을 내는 것은 계산적으로 비효율적이다.
  • SGD는 단일 훈련 포인트의 그래디언트를 계산하여 더 빠르게 수행할 수 있다.
  • 그러나 단일 포인트로 인한 노이즈가 발생할 수 있다.

미니 배치의 장점

  • 미니 배치를 사용하면 여러 데이터 포인트를 동시에 처리할 수 있다.
  • 일반적으로 32개의 샘플을 사용하는 것이 빠르고 정확하다.
  • 정확도가 높아져 솔루션에 더 빨리 수렴할 수 있다.

병렬 처리와 GPU 활용

  • 미니 배치를 통해 계산을 병렬화 할 수 있다.
  • GPU 아키텍처를 활용하여 속도를 더욱 향상시킬 수 있다.

과적합 문제 이해하기

  • 과적합은 머신러닝 전반에서 발생하는 문제이다.
  • 모델이 훈련 데이터에는 잘 맞지만 테스트 데이터에는 성능이 떨어질 때 과적합이라고 한다.

적절한 모델 학습 목표 설정

  • 새로운 테스트 포인트에도 잘 일반화되는 모델을 만드는 것이 목표이다.

정규화 기법

  • 정규화는 모델이 훈련 데이터의 미세한 차이를 학습하지 않도록 하는 기술이다.
  • Dropout은 훈련 중 일부 뉴런의 출력을 무작위로 0으로 설정하는 간단한 정규화 기법이다.
  • Dropout은 네트워크의 용량을 동적으로 낮추어 다양한 경로를 학습하게 한다.

조기 종료 기법

  • 조기 종료는 모델이 과적합되는 시점을 감지하여 훈련을 중단하는 방법이다.
  • 과적합은 테스트 세트에서 성능이 저하될 때 발생하며, 이를 그래프로 확인할 수 있다.
  • 최적의 지점에서 훈련을 중단하면 테스트 정확도가 나빠지는 것을 방지할 수 있다.

강의 요약 및 다음 강의 예고

  • 지금까지 신경망의 기본 구성 요소와 계층적 네트워크 구축 방법을 배웠다.
Video description

MIT Introduction to Deep Learning 6.S191: Lecture 1 * 2024 Edition* Foundations of Deep Learning Lecturer: Alexander Amini For all lectures, slides, and lab materials: http://introtodeeplearning.com/ Lecture Outline 0:00​ - Introduction 7:25​ - Course information 13:37​ - Why deep learning? 17:20​ - The perceptron 24:30​ - Perceptron example 31;16​ - From perceptrons to neural networks 37:51​ - Applying neural networks 41:12​ - Loss functions 44:22​ - Training and gradient descent 49:52​ - Backpropagation 54:57​ - Setting the learning rate 58:54​ - Batched gradient descent 1:02:28​ - Regularization: dropout and early stopping 1:08:47 - Summary Subscribe to stay up to date with new deep learning lectures at MIT, or follow us on @MITDeepLearning on Twitter and Instagram to stay fully-connected!!