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은 네트워크의 용량을 동적으로 낮추어 다양한 경로를 학습하게 한다.
조기 종료 기법
- 조기 종료는 모델이 과적합되는 시점을 감지하여 훈련을 중단하는 방법이다.
- 과적합은 테스트 세트에서 성능이 저하될 때 발생하며, 이를 그래프로 확인할 수 있다.
- 최적의 지점에서 훈련을 중단하면 테스트 정확도가 나빠지는 것을 방지할 수 있다.
강의 요약 및 다음 강의 예고
- 지금까지 신경망의 기본 구성 요소와 계층적 네트워크 구축 방법을 배웠다.