데이터캠프(Datacamp)는 데이터 과학과 분석 학습에 특화된 온라인 교육 플랫폼입니다. 사용자는 웹 브라우저만으로도 파이썬, R, SQL 등 다양한 언어를 학습할 수 있습니다. 실습 중심의 인터랙티브한 코딩 환경을 제공하기 때문에 별도의 프로그램 설치 없이 실시간으로 코드를 작성하고 실행할 수 있습니다.
Datacamp은 이론보다 실습에 초점을 맞춘 커리큘럼을 제공합니다. 각 강의는 짧은 동영상 강의와 코딩 실습으로 구성되어 있으며, 학습자의 진행 상황에 따라 즉각적인 피드백이 주어집니다. 또한 데이터 시각화, 머신러닝, 통계학, 데이터 엔지니어링 등 세부 분야별로 정리된 트랙이 구성되어 있어, 목표에 맞게 체계적으로 학습할 수 있습니다.

최근에는 기업용 데이터 교육 솔루션도 강화하여, 팀 단위의 학습 관리와 성과 분석 기능을 제공합니다. 이를 통해 개인 학습자는 물론 조직 차원에서도 데이터 역량을 향상시킬 수 있습니다.
데이터캠프는 데이터 과학 입문자부터 실무자까지 폭넓은 학습자를 대상으로 하며, 실무와 가까운 예제를 통해 실제 업무에 적용할 수 있는 능력을 키울 수 있는 플랫폼입니다.
이전에 Julia 프로그래밍 강의에 대해서 소개해드린 적이 있는데, 오늘은 PyTorch 강의에 대해서 소개해 드리겠습니다.
[AI 인공지능 머신러닝 딥러닝/Julia] - Julia 프로그래밍 무료 강의 추천 - Datacamp 데이터캠프 데이타캠프 줄리아
Julia 프로그래밍 무료 강의 추천 - Datacamp 데이터캠프 데이타캠프 줄리아
데이터캠프 datacamp.com 라는 사이트를 추천드립니다. Coursera나 edX 처럼 무료 교육으로 아주 유명한 사이트입니다.사이트주소 : datacamp.com 간단히 구글계정으로 로그인 하시면 됩니다. 지원되는 언
inner-game.tistory.com
트랙은 강의 묶음 단위입니다.

머신 러닝의 기술을 배우고 예측, 패턴 인식, 딥 러닝과 강화 학습의 시작 부분에서 뛰어난 능력을 발휘해 보세요.


[AI 인공지능 머신러닝 딥러닝/Python | PyTorch] - 무료강의 scikit-learn을 사용한 지도 학습 후기 | 데이터캠프 datacamp
무료강의 scikit-learn을 사용한 지도 학습 후기 | 데이터캠프 datacamp
DataCamp은 데이터 과학과 인공지능 분야를 배우고자 하는 사람들을 위한 온라인 학습 플랫폼입니다. 프로그래밍, 통계, 머신러닝 등 다양한 주제를 실습 중심으로 학습할 수 있으며, 실제 코드를
inner-game.tistory.com
머신러닝을 딥러닝으로 확장해 보세요. PyTorch 라이브러리를 사용하여 다양한 데이터 유형을 모델링하는 신경망을 만들어 보세요.





딥러닝은 스마트폰 카메라부터 음성 비서, 자율주행차까지 어디에나 존재합니다. 이 과정에서는 이 강력한 기술을 알아보고 가장 널리 사용되는 딥러닝 라이브러리 중 하나인 PyTorch를 활용하여 이를 활용하는 방법을 배웁니다. 이 과정을 마치면 PyTorch를 활용하여 딥러닝을 통해 분류 및 회귀 문제를 해결할 수 있게 됩니다.
총 16개의 비디오로 이루어진 강의이며, 강의를 수료하는데 3~4시간이 예상된다고 합니다.
자율주행차, 스마트폰, 검색 엔진... 딥러닝은 이제 어디에나 있습니다. 복잡한 모델을 구축하기 전에 딥러닝 프레임워크인 PyTorch에 익숙해질 것입니다. 텐서를 조작하고, PyTorch 데이터 구조를 생성하고, PyTorch에서 선형 레이어를 사용하여 첫 번째 신경망을 구축하는 방법을 배우게 됩니다.




PyTorch에서 신경망을 학습시키려면 먼저 활성화 함수와 손실 함수와 같은 추가 구성 요소를 이해해야 합니다. 그러면 신경망을 학습시키려면 손실 함수를 최소화해야 하며, 이는 기울기를 계산하여 수행된다는 것을 알게 될 것입니다. 이러한 기울기를 사용하여 모델의 매개변수를 업데이트하는 방법을 배우게 됩니다







Loss function








파이토치의 CrossEntropyLoss와 소프트맥스
파이토치에서 소프트맥스가 등장하는 이유는 모델의 예측값(로짓, scores)을 확률 분포로 변환하여 다중 클래스 분류 문제에서 각 클래스에 속할 확률을 계산하기 위해서입니다.
- 파이토치의 CrossEntropyLoss는 내부적으로 소프트맥스와 로그를 함께 계산합니다.
- 즉, 직접 소프트맥스를 적용하지 않고 원시 점수(scores, 로짓)만 주면 CrossEntropyLoss가 알아서 softmax와 log 연산을 처리해줍니다.
- 이런 방식은 수치적으로 더 안정적이고(overflow 방지), 역전파(gradient 계산)에 유리합니다.
- 사용자는 보통 출력단에 소프트맥스 함수를 따로 적용하지 않고, CrossEntropyLoss에 바로 로짓을 넘깁니다.
one-hot encoded labels
- one-hot encoded labels는 "정보를 하나만 뜨게 만든 인코딩"이라는 의미에서 유래했습니다.
- 각 클래스(카테고리)마다 해당 항목이면 1, 아니면 0을 넣어 표현하는데, 이처럼 "하나만(only one)" 값이 뜨는(핫=활성) 인코딩이라는 뜻입니다.
- 예를 들어, 3개의 클래스가 있다면 정답 클래스의 위치만 1이고 나머지는 0이 되는 벡터입니다.

import torch # 파이토치 라이브러리를 불러옵니다. 텐서 연산과 신경망 구현에 사용됩니다.
import torch.nn.functional as F # 파이토치에서 제공하는 다양한 함수(F, functional)를 사용하기 위해 import합니다.
from torch.nn import CrossEntropyLoss # 교차 엔트로피 손실 함수 클래스를 import합니다.
y = [2] # 정답 레이블을 정의합니다. 여기서는 2번 클래스가 정답입니다.
scores = torch.tensor([[0.1, 6.0, -2.0, 3.2]])
# 모델이 출력한 네 개 클래스의 '로짓(logit)'값을 정의합니다. 소프트맥스 이전 확률 점수입니다.
# 첫 번째 샘플(여기선 하나)의 각 클래스별 예측 점수입니다.
one_hot_label = F.one_hot(torch.tensor(y), num_classes=4)
# 정답 레이블 y를 one-hot 인코딩합니다.
# num_classes=4이므로 [0, 0, 1, 0] 벡터가 나옵니다(2번 클래스가 1).
criterion = CrossEntropyLoss()
# 교차 엔트로피 손실 함수 객체를 생성합니다.
# 이 함수는 예측 점수와 정답 레이블 사이의 손실을 계산합니다.
loss = criterion(scores.double(), one_hot_label.double())
# 모델 예측값(scores)과 one-hot 벡터 정답값(one_hot_label)을 입력으로 손실값을 계산합니다.
# 입력 자료형을 double로 맞춰 오류 방지합니다.
print(loss)
# 최종적으로 계산된 교차 엔트로피 손실값을 출력합니다. 손실값은 float로 나오며, 값이 작을수록 예측이 정답에 가깝다는 뜻입니다.


이제 신경망의 핵심 구성 요소를 배웠으니, 학습 루프를 사용하여 신경망을 학습해 보겠습니다. 기울기 소멸과 같은 잠재적인 문제를 살펴보고, 대체 활성화 함수 사용, 학습률 및 모멘텀 조정 등 이를 해결하는 전략을 알아봅니다.



한 에포크는 훈련 데이터로더를 완전히 통과하는 것을 의미하며 일반화는 다음을 의미합니다.
일반화는 모델이 단순히 훈련세트를 기억하는것 보다는 보이지 않는 데서도 더 나은 성능을 발휘하게 합니다.
그런 다음 이러한 매개변수를 사용하여 데이터로더 인스턴스를 생성하면 일괄적으로 데이터세트를 반복하기 쉽습니다.


첫번째 반복에서는 무작위로 두마리 동물과 해당 라벨을 선택
두번째 반복에서는 두개의 샘플이 무작위로 선택되어 레이블이 지정됩니다.
마지막으로 남은 샘플이 반환됩니다.
실무에서는 더 나은 계산 효율성을 위해 배치사이즈가 32이상

calculate loss와 compute gradients
| 단계 | 역할 및 정의 | 코드에서의 위치 | 결과와 영향 |
| calculate loss | 모델의 예측값과 실제값을 비교해 "오차(손실)"를 정량적으로 계산 | loss = criterion(output, target) | 손실 함수 값(스칼라, 예를 들어 2.5) |
| compute gradients | 손실을 모든 모델 파라미터(w, b 등)에 대해 미분해서 "기울기(gradient)"를 계산 | loss.backward() | 각 파라미터별 gradient(텐서, 예를 들어 w의 grad) |
자세한 설명
- calculate loss는 단순히 예측이 얼마나 틀렸는지 수치적으로 나타내는 것.
- compute gradients는 이 손실 값이 모델의 각 파라미터를 어떻게 변화시켜야 감소하는지 미분을 통해 계산함.
- 손실 계산이 반드시 선행되어야만, 그 다음 단계인 gradient(기울기) 계산이 가능합니다.
딥러닝에서 "calculate loss"는 학습 성능 측정 지표이며, "compute gradients"는 실제로 파라미터 업데이트에 사용되는 정보입니다.

특징은 범주형이며, 목표는 이미 정교화된 미국 달러 급여입니다.
목표가 연속값이므로 이는 회귀문제입니다.
회귀의 경우 소프트맥스나 시그모이드 대신 선형계층을 최종 출력으로 사용합니다.
또한 교차 엔트로피는 분류 작업에만 사용되므로, 회귀 전용 손실함수를 적용할 것입니다.
목표가 연속값인 이유
목표가 연속값인 이유는, "salary_in_usd" 컬럼이 실수(float) 형태의 금액(예: 0.036, 0.133 등)을 담고 있기 때문입니다.
연속값이란 그 값을 쪼개도 무한히 많은 수가 나올 수 있는 값(예: 0.15, 0.151, 0.1511...), 즉 숫자적 크기가 '연속적으로' 변할 수 있는 데이터를 의미합니다.
회귀(Regression) vs 분류(Classification)와 연속값
- 회귀 문제는 예측 결과(타깃 값)가 숫자이면서, 그 사이에 중간값이 존재할 수 있게 연속적으로 바뀔 수 있을 때 적용됩니다.
- "salary_in_usd"는 특정 직업, 경력, 근무 형태 등에 따라 소수점 단위로 다양하게 변할 수 있는 금액이므로,
- - 예를 들어, 40000 달러, 45555.32 달러, 99999.99 달러 등 모든 값이 실수이며 서로 구분된 범주로 나뉘지 않습니다.
- 반면, 분류 문제는 명확한 종류나 레이블(예: 사과·바나나·오렌지, 혹은 남자·여자, 합격·불합격)처럼 중간값 없이 "딱 잘라진" 범주 값을 예측할 때 사용하는 방식입니다.
예시로 보는 연속값 특징
- 데이터에서 "salary_in_usd"가 0.076, 0.170처럼 소수점 단위까지 숫자 값이 존재하므로, 두 값 사이 값(0.100, 0.150 등)의 예측도 문제 없이 가능합니다.
- 이런 데이터는 모든 값이 서로 미세하게 다를 수 있으므로, "연속값"이 Target이 되는 회귀 문제에 해당합니다.
즉, "salary_in_usd"처럼 금액이나 수치가 연속적인 값을 가지면 문제의 정답이 숫자 범위 전체에 푸는 "회귀 문제"가 되고, 이를 연속값이라 부릅니다.
왜 카테고리컬이라고 표현할까?
숫자로 저장되어 있어도, 그 값이 '순서'나 '양'이 아니라 각기 다른 종류(예: 회사 규모, 경력 단계 등)를 나타내는 경우 "카테고리컬"이라고 부릅니다.
반대로 연속값(예: 급여, 키, 몸무게)처럼 값을 나눠도 얼마나 차이가 나는지를 비교할 수 있을 때는 "연속형"이라고 합니다
remote_ratio
- remote_ratio는 "원격 근무 비율로서 0, 0.5, 1.0 등 숫자값"으로 표현됩니다.
- 이 값이 만약 0(오프라인), 0.5(부분 원격), 1.0(완전 원격)처럼 제한된 몇 개의 상태로만 정해져 있다면, "이산형(카테고리컬) 변수"로 취급할 수 있지만,
- 여러 중간값(예: 0.35, 0.7 등)이 가능하다면 연속형 변수로 분류됩니다.
- 실제 데이터셋에 따라 정해진 몇 개의 값만 들어가 있으면 범주형처럼 취급하지만, 논리적으로는 비율이라는 연속값 성격입니다.
company_size
- company_size는 "회사 규모"를 수치로 나타낸 변수이고, 보통은 S(작은 회사), M(중간 회사), L(큰 회사) 등 범주로 구분됩니다.
- 표에서 0, 1, 2 등의 수치가 이 범주에 매핑된 것이면, 이는 진짜 "카테고리컬(범주형)" 변수입니다.
- 실제 수치(직원 수 등)가 직접 입력되어 있으면 연속형 변수가 되지만, 여기서는 분류된 등급에 따라 숫자를 할당해 놓았을 가능성이 높습니다.
회귀 문제에는 평균 제곱 오차(MSE) 손실을 사용할 수 있습니다.
이것은 회귀 문제 이므로 원-핫 인코딩은 필요하지 않습니다.




역전파 과정에서는 각 기울기가 이전 기울기에 따라 달라지기 때문에 문제가 됩니다.
그래디언트가 매우 작으면 가중치를 효과적으로 업데이트하지 못합니다.
이 문제는 '기울기 소실 문제'로 알려져 있으며, 딥 네트워크의 학습을 매우 어렵게 만들 수 있습니다.

정류선형단위 ReLU


Learning rate and momentum

신경망을 훈련한다는 것은 최적화 문제를 푸는 것을 의미합니다.
손실 함수를 최소화하고 모델 매개변수를 조정하여 문제를 해결합니다.
(정확히는 손실 함수의 출력 값을 최소화 한다는 뜻)
이를 위해 확률적 경사 하강법(SGD)이라는 알고리즘을 사용함.
이것이 손실 함수의 전역 최소값을 찾는 데 사용된 최적화 프로그램 이라는 것을 기억.
두가지 파라메터
- 러닝레이트: 스텝사이즈 조절
- 모멘텀 : 관성을 추가하여 최적화 프로그램이 원활하게 움직이고 멈추는데 도움을 줌



딥러닝 모델을 학습하는 것은 예술과도 같으며, 모델이 올바르게 학습되었는지 확인하려면 학습 과정에서 손실이나 정확도와 같은 특정 지표를 추적해야 합니다. 이러한 지표를 계산하는 방법과 과적합을 줄이는 방법을 알아보겠습니다.
전이학습: 첫번째 작업에서 훈련된 모델을 두번째 작업에 재사용 하는것

새로운 데이터 세트로 모델을 훈련하고 있으며, 처음부터 훈련하는 것(즉, 무작위로 초기화된 가중치로 훈련하는 것) 대신 미세 조정 방식을 사용할 수 있다고 생각합니다.



Evaluating model performance
머신러닝에서는 데이터를 훈련세트, 검증세트, 테스트 세트 로 나눕니다.
훈련데이터는 가중치와 편향과 같은 모델 매개변수를 조정하고,
검증데이터는 학습률과 모멘텀 같은 하이퍼파라미터를 주정하고
테스트세트는 모델의 최종 성능을 평가합니다.




과적합되면 훈련손실은 계속 감소하지만 검증 손실은 증가하기 시작
손실은 모델이 얼마나 잘 학습햇는지 알려주지만, 항상 예측이 얼마나 정확한 지를 반영하는 것은 아닙니다.
이를 측정하기 위해 torchmetrics를 사용합니다.
argmax(dim=-1)을 사용하여 가장 높은 확률을 갖는 클래스를 선택합니다.
이는 메트릭에 전달하기 전에 원핫인코딩된 예측을 클래스 인덱스로 변환합니다.

과적합과의 싸움
과잉적합은 모델이 보이지 않는 데이터로 일반화되지 않을 때 발생한다는 점을 기억하세요.


- 모델크기를 줄이거나 드롭아웃이라는 새로운 유형의 레이어를 추가합니다.
- 가중치 감소를 사용하여 매개변수를 작은 상태로 유지할 수도 있습니다.
- 더 많은 데이터를 얻거나 데이터 증강을 사용할 수 있습니다.

- 드롭아웃은 무작위로 일부 부분을 비활성화하는 '정규화' 기술 입니다.
- 훈련 중에 뉴런을 학습시켜 모델이 특정 기능에 지나치게 의존하는 것을 방지합니다.
- 드롭아웃 레이어는 일반적을 활성화 함수 뒤에 추가됩니다.
- p인수는 뉴런이 0으로 설정될 확률을 결정합니다.
- 훈련중과 평과중에는 드롭아웃이 다르게 작동합니다.
훈련 중에는 무작위로 뉴런을 비활성화하고,
평가가 비활성화되어 모든 뉴런이 활성화되면 안정적인 예측이 보장됩니다. model.train()과 model.eval()으로 전환

가중치 감소도 또 다른 형태의 정규화 전략입니다.
weight_decay는 손실 함수에 패널티를 추가합니다.
역전파 과정에서 이러한 패널티가 기울기에서 차감되어 과도한 가중치 증가가 방지됩니다.
가중치 감소를 높게 설정할수록 정규화가 강해져 과적합이 발생할 가능성이 줄어듭니다.


Overfitting happens when the model is performing worse on the validation set than on the training set.
Data augmentation can reduce overfitting by artificially increasing the size of the training set.
A dropout layer with a probability greater than zero will help reduce overfitting.
Improving model performance





하이퍼파라미터 미세설정은, 학습 속도나 모멘텀과 같은 최적화 설정에서 종종 수행됩니다.




[AI 인공지능 머신러닝 딥러닝/Julia] - 줄리아 프로그래밍 - 딥러닝, Deep Learning
줄리아 프로그래밍 - 딥러닝, Deep Learning
첫 강의: [AI 인공지능 머신러닝 딥러닝/Julia] - Julia 프로그래밍 - 언어 및 강의 소개 Julia 프로그래밍 - 언어 및 강의 소개Julia 프로그래밍 언어줄리아(Julia)는 고성능의 수치 해석 및 계산과학의 필
inner-game.tistory.com
[AI 인공지능 머신러닝 딥러닝/인공지능 수학] - 2025 인공지능·머신러닝 입문자를 위한 핵심 통계개념 완전정복 (1/2)
2025 인공지능·머신러닝 입문자를 위한 핵심 통계개념 완전정복 (1/2)
안녕하세요! 오늘은 최근에 시청한 유튜브 신박Ai의 “[인공지능을 위한 머신러닝101] 머신러닝을 위한 기초통계개념” 영상을 바탕으로, 인공지능과 머신러닝을 공부하는 데 꼭 필요한 통계 개
inner-game.tistory.com