🧑🏽💻Dev:Lang/Python
Python: 머신러닝, 딥러닝과 신경망의 기본 개념
Diven
2026. 3. 20. 13:55

머신러닝의 종류.
- Training : 학습에 사용됨
- Verification data : 학습되는 모델을 검증 하는데 사용됨
- Test data : 학습된 모델의 성능을 실제로 평가하기 위해서 사용됨
머신러닝은 4가지 종류로 분류됨.
- Supervised learning
- Unsupervised learning
- semi-supervised learning
- Reinforcement learning
Supervised learning.
- labeled data로 학습 수행
- 라벨이 붙어있는 학습 데이터의 예

- 입력과 출력 사이의 관계를 학습하고, 이 관계가 규칙 또는 함수로 표현되는 모델을 찾음
- 가장 일반적인 문제 유형
- image labeling : tagged images로부터 학습
- Email spam filter: labeled (spam or ham) 이메일로부터 학습
- 시험 점수 예측 : 이전의 시험 성적과 공부한 시간을 학습
Unsupervised learning
- Unlabeled data로 학습.
- 어떤 데이터는 라벨을 일일이 할당할 수 없음
- Google news grouping
- 자동적으로 유사한 뉴스를 그룹핑함
- 유사한 단어를 수집하는 Word clustering
- 일일이 데이터에 라벨을 부여하기가 어려움
- 데이터를 보고 스스로 학습을 수행

반지도학습.(semi-supervised learning.)
- 지도 학습과 비지도 학습의 중간에 위치함
- 입력과 출력 정보가 있는 학습데이터와 입력만 있고 출력 정보가 없는 학습데이터를 함꼐 사용함
- 입력과 출력정보가 함께 있는 학습데이터가 적은 상황에서 분류나 회귀 모델 개발시
- 출력 정보가 없는 입력데이터의 분포 특성 정보를 활용하여 성능 개선
강화학습(reinforcement learning.)
- 특정 환경에서 행동과 이에 대한 보상의 경험을 통해서 보상이 최대가 되도록 상황별로 취할 행동을 결정하는 방법
- 게임, 제어문제, 금융공학 등에서 행동 전략이나 정책을 결정할 때 사용함
supervised Learning의 수행단계
- step 1 : Training data set과 ML 모델이 주어짐
- step 2 : Label이 주어진 training data set을 학습시킴
- step 3 : 학습을 통해 ML 모델이 생성됨
- 모델의 파라미터가 학습을 통해 결정됨
- step 4 : 생성된 ML 모델에 x_test라는 값을 입력하여 y의 값을 물어봄
- step 5 : 생성된 ML 모델은 x_test에 대한 y의 값은 3이라고 알려줌

감독학습의 종류.
- Regression
- 출력이 연속적인 영역 안의 값을 결정하는 분야
- Linear regression과 nonlinear regression으로 분류됨
- 공부한 시간을 기반으로 0점에서 100점 사이의 시험 성적을 예측하는 시스템
- Classification
- 데이터들을 정해진 몇 개의 class로 대응시키는 문제
- Binary classification
- 데이터를 2가지 class로 분류함
- 공부한 시간을 기준으로 성적이 pass했는지 non-pass 했는지를 예측하는 시스템
- Multi-label classification
- 데이터를 여러 가지 class로 분류함
- 공부한 시간을 기반으로 성적이 A,B,C,D,F 이지를 예측하는 시스템



신경망
- 인간 두뇌의 생리적 활동에 대한 계산적 모델을 통해 인공지능을 구현하려는 분야
- 인간의 궁극적인 꿈 : 생각하는 기계 만들기
- 생물학적인 뉴런의 구성도
- 여러 개의 Signals 들이 입력되어서 cell nucleus에서 합해짐
- 합쳐진 시그널들이 일정한 값 이상이 될 때에는 활성화가 되어서 다음 뉴런에 전달됨

Biological neuron 동작 원리를 흉내냄
- 인공적인 뉴런을 만듦
- 인공적인 뉴럴 네트워크
- 인공적인 뉴런을 여러 개 결합한 것

perceptron
- 입력 노드와 출력 노드로 구성된 ANN
- Frank Rosenblatte 박사에 의해 고안됨
Multi-layer perceptron (MLP)
- input layer 및 output layer와 함께 hidden layer가 존재함
- Marvin Minsky 교수에 의해 고안됨

Deep neural network (DNN)
- 은닉층이 2개 이상인 MLP를 의미

딥러닝(deep learning.)
- Deep NN을 사용해 만든 모든 알고리즘
딥러닝의 종류.
- Convolutional neural network (CNN)
- Recurrent Neural network(RNN)
- Restricted Boltzmann Machine (RBM)
- Deep Belief Network (DBN)
- Generative Adversarial Network (GAN)
- Relation Networks (RN)
Convolutional neural network (CNN)
- 특징맵을 생성하는 필터까지도 학습이 가능해 비전(vision)분야에서 성능이 우수함

Recurrent Neural network (RNN)
- 음성과 같은 Time-series data의 처리에 적합함

필요한 개발 툴.
- IDE : jupyter Notebook
- Python
- Numpy : 강력한 계산 기능 수행
- Matplotlib : 분석된 데이터의 시각화
- Scikit-Learn : Python의 ML package
- TensorFlow
- 머신러닝을 위해 구글에서 만들어짐
- data flows를 사용해서 수치 계산을 위한 open-source software library for
- 최근에 머신러닝 라이브러리로 가장 많이 사용 되고 있음

머신러닝으로 암 데이터 예측.
- 특징 데이터
- Age와 tumor_size
- Label 데이터
- 0(암), 1(정상)
- 학습 모델
- Multi-variable linear
- regression model
- ML library
- Scikit-learn 사용함
import matplotlib.pyplot as plt
import numpy as np
import numpy.random as npr
from sklearn import datasets, linear_model
from sklearn.metrics import mean_squared_error, r2_score
datum = np.genfromtxt('../Desktop/data/cancer_data.csv',delimiter = ',', dtype = np.float32, skip_header = True)
# except header.
datum = datum[1:,:]
#shuffle.
npr.shuffle(datum)
X = datum[:, :2]
Y = datum[:, 2]
train_x = X[:60]
test_x = X[60:80]
val_x = X[80:]
train_y = Y[:60]
test_y = Y[60:80]
val_y = Y[80:]
regr = linear_model.LinearRegression()
regr.fit(train_x, train_y)
test_preds = regr.predict(test_x)
fig = plt.figure()
ax = fig.add_subplot(2,2,1)
ax.set_xlim(0, 10)
ax.set_ylim(0, 10)
ax.set_title('Pred')
test_preds = [0 if pred <= 0.5 else 1 for pred in test_preds]
pred_colors = ['b' if pred == 0 else 'r' for pred in test_preds]
ax.scatter(test_x[:,0], test_x[:,1], color = pred_colors, linewidth = 3)
ax = fig.add_subplot(2,2,2)
ax.set_xlim(0, 10)
ax.set_ylim(0, 10)
ax.set_title('True')
y_colors = ['b' if y == 0 else 'r' for y in test_y]
ax.scatter(test_x[:,0], test_x[:,1], color = y_colors, linewidth = 3)
plt.show()