Happy to visit my research note ^^

[1] AI & principle of machine learning 본문

AI & Machine Learning

[1] AI & principle of machine learning

Liam Lim 2023. 3. 17. 16:00
728x90

3.10.2023 (Fri)


 

 

 

  Machine Learning은 현재 산업 및 비지니스, 그리고 학문적 분야에서 data로부터 패턴을 추출하고 예측을 수행하는 알고리즘을 개발하는 분야로, 인공지능의 핵심 분야 중 하나이다.

  Machine Learning의 가장 큰 장점은 large-scale data를 다룰 때 빠르고, 정확하게 data간의 pattern을 찾아내어 예측을 수행할 수 있다는 것이다. 이를 통해, 기업은 client의 선호도를 분석하여 제품 라인을 개발하고, 금융 기관은 부정 거래를 탐지해서 대처하는 등 많은 응용 분야에서 사용된다.

  또한, ML은 인간의 인지 능력을 모방하고, 사람이 수행하는 작업을 자동화하여 생산성을 향상시키는 데에도 사용된다. 이를 통해 기업이 비용을 절감하거나, 사람의 실수를 줄여 안전성을 높이는 등의 효과를 얻을 수 있다.

  따라서, 기계학습을 배우면 다양한 분야에서 적용 가능한 인공지능 모델을 개발하고, 새로운 문제를 해결하는 데 도움이 된다. 또한, 기계 학습은 현재와 미래의 일자리 창출에도 매우 중요한 역할을 한다.

 

 

 

 

 

  AI는 가장 큰 범주로 '사람의 행동을 모방하는 기술' 을 의미한다.

  그안에 Machine Learning이 있는데 ML은 컴퓨터가 명시적으로 프로그래밍되지 않아도 스스로 학습할 수 있는 인공지능 기술을 의미한다.

  그리고 Deep Learning은 ML의 subset으로 multi-layer neural networks(다층 신경망)을 계산하는 것이 가능하게 한다.

 

  Learning from data : data로부터 학습하는 ML model은, input data와 output data 사이의 관계를 학습한다. input data는 model이 학습할 데이터이고, output data는 이에 대한 정답 혹은 예측값이다. 예를 들어, 이미지 인식을 위한 ML model은 input으로 image를 받아들이고, output으로 해당 image에 대한 classified results를 반환한다.

 

  Generalization performance (일반화 성능) : ML 분야에서 중요한 개념 중 하나로, 이전에 본 적이 없는 새로운 데이터에 대해 얼마나 잘 예측할 수 있는지를 나타낸다. generalization performance는 training data에 대해 overfitting되지 않고, 새로운 데이터에 대해서도 높은 성능을 발휘하는 모델을 만드는 것, 즉, generalization performance가 높은 model은 training set에 대해서 오차가 작고, 새로운 데이터에 대해서도 비슷한 수준의 performance를 유지할 수 있는 모델이다. If you want to make high generalization performance ?? ㅡ> training dataset에 대한 diversity와 balance를 맞추는 것이 중요하다. 이를 위해, training dataset을 여러 개의 그룹으로 나누고, 일부 데이터는 학습에 사용하고, 나머지 데이터는 검증(validation)에 사용하여 모델의 generalization performance를 평가한다.

 

 

 

 

Dataset : a collection of data, a collection of examples, collections of features

Design matrix : one common way of describing a dataset

 - a different example in each row

 - a different feature in each column

 - e.g. Iris dataset containing 150 examples and 4 features

   - a design matrix of Iris : X ∈ R^(150x4)

일반적으로 samples -> xais, feature -> yais

 


from sklearn import datasets

 

  ' from ' keyword는 특정 모듈이나 package에서 특정 이름의 function, class, variable 등을 가져올 때 사용한다.

  ' import ' keyword는 모듈이나 패키지를 현재 코드에 포함시킬 때 사용한다.

  ' import ' keyword로 모듈이나 패키지를 가져오면 해당 모듈이나 패키지에서 정의한 함수, 클래스, 변수 등을 사용할 수 있다.

  따라서 ' from sklearn import datasets '는 scikit-learn 패키지의 ' datasets ' 모듈에서 모든 객체를 현재 코드로 가져온다는 의미이다.


iris = datasets.load_iris() 
x = iris.data 
y = iris.target

 

  ' iris '는 ' datasets.load_iris() ' 함수를 호출한 결과로, Iris dataset의 feature data와 label data를 담은 # 객체이다.

  ' iris.data '는 Iris dataset의 feature data인 4개의 실수값으로 이루어진 numpy array이다.

  ' iris.target '은 Iris dataset의 label data인 0, 1, 2로 이루어진 numpy array이다.

따라서, 위 코드에서 ' x '는 feature data, ' y ' 는 label data를 각각 저장하게 된다.


import numpy as np
from tensorflow import keras
from tensorflow.keras import layers
import matplotlib.pyplot as plt

  

  "import numpy as np" : # numpy 모듈을 불러와서 np라는 이름으로 사용할 수 있도록 한다. 

  "from tensorflow import keras" : tensorflow 모듈에서 keras를 불러와서 사용할 수 있도록 한다.

  "from tensorflow.keras import layers" : tensorflow.keras 모듈에서 layers 서브모듈을 불러와서 사용할 수 있게 한다.

  "import matplotlib.pyplot as plt" : matplotlib.pyplot 모듈을 불러와서 lt라는 이름으로 사용할 수 있게 한다. 이 모듈은 그래프를 그리는 등의 시각화 작업에 사용된다.

 


# Load the data and split it between train and test sets
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
unique, counts = np.unique(y_train, return_counts = True)
print(unique, counts)

 

  위 코드는 MNIST dataset을 불러와서, train data와 test data로 나누는 코드이다.

  MNIST dataset은 손글씨 및 숫자 이미지를 담고 있는 dataset으로, ML and Deep Learning 분야에서 많이 사용되는 대표적인 dataset 중 하나이다.

  code에서, keras.datasets.mnist.load_data() function을 사용해서 MNIST dataset을 불러와서 해당 x/y_train 과 x/y_test 변수에 할당한다.

  마지막으로 np.unique() function과 return_counts = Trye 옵션을 사용해서, train data에서 각 숫자 이미지가 몇 개씩 존재하는 지를 출력한다. unique 변수에는 0-9까지의 숫자가 저장되고, counts variable에는 각 숫자 이미지의 개수가 저장된다. 이를 통해서 MNIST dataset이 균형있게 구성되어 있는지 확인하는 절차를 거칠 수 있다.

 


plt.imshow(x_train[0], cmap = 'gray')

# just a little function for pretty printing a matrix
def matprint(mat, fmt = "g") :
	for x in mat :
    		for y in x :
        		print('%3s'%y, end = ' ')
      		print()

 

  위 코드는 MNIST dataset에서 첫 번째 train image를 출력하는 코드와, 행렬을 정돈되게 출력하기 위해서 matprint() functionㅡㅇㄹ 정의하는 코드이다.

  plt.imshow(x_train[0], cmap = 'gray')는 첫 번째 train image인 x_train[0]을 gray scale image로 출력하는 코드이다. x_train[0]은 28x28 크기의 matrix로, 각 component는 0부터 255까지의 값을 가진다. cmap = 'gray'는 컬러맵을 gray scale로 설정하는 옵션이다.

  matprint는 매개변수로 받은 matrix mat을 traversal하면서, 각 요소를 '%3s' 형식으로 출력한다. 이를 통해, 각 요소는 3칸의 공간을 차지해서 행렬을 정돈된 형태로 출력해줄 수 있다.

 

 

 

 

 


Terminology


# Dataset : Machine Learning model을 학습시키기 위한 data의 집합이다.

 

# Featrue : 각 data가 가지고 있는 속성을 나타내는 변수

 

# Label  : 각 data가 속하는 범주를 나타내는 값

 

# model : 학습된 데이터를 기반으로 새로운 입력에 대한 출력을 예측하는 함수

 

# Learning : 모델이 데이터를 학습하면서 weight를 조정해서 input과 output 간의 관계를 파악한다.

 

# loss function : 모델의 예측과 실제 출력값과의 차이를 계산하는 함수

 

# Gradient descent : loss function을 최소화하기 위해 weight를 조정하는 optimistic algorithm

 

# Validation dataset : 학습된 모델의 성능을 평가하기 위한 dataset

 

# Overfitting : 모델이 training data에 너무 잘 적합돼서 새로운 데이터에 대한 예측 능력이 떨어지는 현상

 

# underfitting : model이 training data의 패턴을 충분히 파악하지 못해서 예측 성능이 떨어지는 현상

 

# Hyperparameter : model의 성능을 제어하는 변수로, weight와는 다른 역할을 한다. 대표적으로 learning rate가 있다.

 

# 객체

 ' 객체 '는 programming에서 구현하려는 대상을 구체적으로 표현한 것으로, 여기서는 Iris dataset과 그것의 feature와 label data를 담은 변수를 가리킨다. 객ㅊ에는 변수와 함수(method)를 포함할 수 있으며, 해당 객체에 대한 동작을 정의하고 실행할 수 있다. 예를 들어, iris 객체에서 .data나 .target과 같은 속성(attribure)에 접근할 수 있으며, 이를 통해 데이터를 가져오거나 수정할 수 있다. 이러한 객체는 programming에서 code의 reusability, maintainability, scalability 등을 높일 수 있다.

#

 

# linear regression (선형 회귀)

  "Linear regression (선형 회귀)"는 입력 변수와 출력 변수 사이의 선형 관계를 모델링하는 기법이다. 이 기법은 # 최소제곱법 (Least Square Method)을 사용하여 모델의 parameter를 추정한다. 최소제곱법은 모델의 예측값과 실제값의 차이인 오차를 최소화하는 parameter 값을 구하는 방법이다. 선형 회귀는 예측 문제, 분류 문제 둘 다에 사용할 수 있다. # 단순 선형 회귀와 다중 선형 회귀 등 다양한 종류가 있다.

#

 

# 최소제곱법 (Least Square Method)

  "Least Square Method"는 데이터의 분포를 가장 잘 나타내는 선형 함수를 구하기 위한 방법 중 하나이다. 데이터 분포가 주어졌을 때, 그 분포를 가장 잘 대표할 수 있는 선형 함수를 찾는 것이 최소제곱법이다.

  여기서 선형 함수란 y = ax + b와 같은 형태의 함수를 말한다. 최소제곱법에서는 이러한 선형 함수의 기울기 a와 y절편 b를 찾아내는 것이 목표이다.

  최소제곱법은 먼저 데이터 분포에서 임의의 한 점을 선택한 후, 이 점에서의 절편 b를 구한다. 그리고 이 점에서부터 데이터 분포까지의 거리를 계산하여 이 거리의 제곱을 모두 더한 값을 최소화하는 기울기 a를 찾는다.

  이 과정을 통해 얻어진 선형 함수는 데이터 분포를 가장 잘 나타내는 선형 함수이다. 이러한 선형 함수는 predictive modeling, regression analysis 등에서 사용된다.

#

 

# 단순 선형 회귀와 다중 선형 회귀 

  • Simple Linear Regression (단순 선형 회귀) : 독립 변수(x)와 종속 변수(y) 간의 관계를 1차 함수로 modeling한 것이다. 독립 변수와 종속 변수가 하나씩만 존재하는 경우에 사용된다.

  예를 들어, 공부 시간 (x)와 성적 (y) 간의 관계를 1차 함수로 modeling하여 y를 예측할 수 있다. 수식으로는 y = ax + b와 같이 나타낼 수 있다. 여기서 a는 기울기(slope), b는 y 절편(intercept)을 나타낸다.

  • Multiple Linear Regression (다중 선형 회귀) : 독립 변수가 2개 이상일 때 사용되는 회귀 분석 기법이다. 종속 변수와 여러 개의 독립 변수 간의 관계를 1차 함수로 모델링한 것이다.

  예를 들어, 공부 시간(x1), 출석률(x2), 그리고 과제 점수(x3) 와 성적(y) 간의 관계를 1차 함수로 modeling하여 y값을 예측할 수 있다. 수식으로는 y = a1x1 + a2x2 + a3x3 + b와 같이 나타낼 수 있다. 여기서 a1, a2, a3는 각 독립 변수의 weights(가중치)를 나타내고, b는 y 절편을 나타낸다.

#

 

# Underfitting

  "Unterfitting"은 model이 training data에서 충분히 낮은 error 값을 얻지 못하는 경우를 의미한다. 즉, model이 너무 간단하거나 데이터를 충분히 학습하지 못하여 training data의 특징을 제대로 파악하지 못하는 상태를 말한다. 이 경우, model이 training data에 underfitting되었다고 말할 수 있다.

  예를 들면, Simple Linear Regression model을 사용해서 복잡한 non-linear 관계를 modeling하려고 한다면, 이 model은 데이터를 충분히 설명할 수 없으므로 Underfitting이 발생할 가능성이 높다. 이러한 경우, model을 더 복잡하게 만들거나, 더 많은 데이터를 사용하거나, 더 좋은 feature engineering 기술을 적용해서 model의 performance를 향상시킬 수 있다.

  Underfitting이 발생하면 model은 training data에서는 좋은 성능을 내지 못할 뿐만 아니라, test data에서도 비슷한 결과를 내게 될 가능성이 높다. 따라서, model의 complexity를 높이는 등의 대책을 적용해서 성능을 개선해야 한다.

#

 

# Overfitting

  "Overfitting"은 model이 training dataset에 대해 지나치게 학습돼서, test dataset에 대한 오차가 크게 발생하는 현상이다. 즉, model이 training data에 지나치게 맞춰져서 새로운 데이터에 대한 예측 능력이 떨어지는 상태를 말한다. model이 noize에 대해 과도하게 학습하거나, 특정한 pattern에 지나치게 적합되어서 generalization이 안되는 것.

  Overfitting은 training dataset에 대한 오차는 매우 낮지만, test dataset에 대한 오차가 크게 발생하는 경우에 나타난다. 이러한 경우 model이 training dataset의 노이즈나 이상치에 지나치게 적합되어 새로운 데이터에 대한 예측 능력이 떨어지는 문제가 발생할 수 있다.

  이 경우, model의 complexity를 낮추거나, dataset의 크기를 늘리는 등의 방법으로 Overfitting을 해결할 수 있다.

#

 

# numpy 

 "numpy"는 python에서 과학적 계산을 위한 핵심 라이브러리 중 하나로, 다차원 배열을 효과적으로 다룰 수 있도록 지원하고, linear algebra calculation, Fourier transform, Random number generation 등의 기능도 제공한다.

  numpy의 array 객체는 일반적인 python의 list와 비슷하지만, 더 높은 performance와 convenience을 제공한다. 특히, array는 모든 원소가 같은 data type을 가져야 하기 때문에 list모다 memory usage이 적고 빠르게 처리할 수 있다.

  numpy는 또한, array를 다루기 위한 다양한 # function과 method를 제공하고, 다른 라이브러리와 호환성이 좋다. 따라서, data processing과 analysis를 위한 다양한 분야에서 많이 활용된다.

#

 

# function과 method

  function과 method는 모두 programming에서 사용되는 용어로 비슷한 개념이지만 차이가 있다.

  • function : 일련의 code block으로 특정한 작업을 수행하는 code unit이다. parameter를 받아서 필요한 계산을 수행한 후 결과를 반환하는 것을 function
  • method : 객체(object)에 속한 함수로, object의 상태를 변경하거나 object와 관련된 작업을 수행하는 함수이다. object는 class에 의해 정의되고, class에는 attribute와 method가 포함된다. 

  따라서, function은 독립적인 code block이고 parameter를 받아서 결과를 반환하고, method는 object에 속한 function이며 object의 상태를 변경하거나 작업을 수행한다.

#

 

# k-fold cross validation

  "k-fold cross validation"은 machine learning model의 performance를 평가하고 선택하는 데 사용되는 일반적인 기술이다. dataset을 k 개의 서로 다른 부분 집합 또는 'fold'로 나눈다. 이후 k 번의 반복 과정을 거쳐서, 각각의 fold를 순서대로 선택해서 # validation data로 사용하고 나머지 k - 1개의 fold를 training data로 사용하여 model을 학습시킨다. 이후 각각의 fold에 대해 model의 performance를 평가하고, 이를 # 평균화(Averaging)해서 최종 모델의 performance를 평가한다. 이러한 과정을 통해 model의 # generalization performance(일반화 성능)을 측정하고, 최적의 # hyperparameter 값을 찾는 데 유용하다.

#

 

# validation data

  "validation data"는 model training 중 model의 performance를 평가하는 데 사용되는 데이터로, 주로 # hyperparameter tuning에 사용된다.

#

 

# 평균화(Averaging)

  여러 값의 평균 또는 평균값을 구하는 과정으로, variation(분산)을 감소시키거나 precision을 향상시키는 데 자주 사용된다.

#

 

# generalization performance(일반화 성능)

  model이 새로운, 이전에 보지 못한 data에서 잘 수행하는 능력이다. 주로 test set을 사용하여 측정한다.

#

 

# hyperparameter 

  machine learning algorithm에서 training 전에 설정되는 data에 대한 training을 하지 않고 고정되는 parameter로, 주로 validation data를 사용하여 tuning한다.

#

 

 

 

728x90

'AI & Machine Learning' 카테고리의 다른 글

Example of Neural Network using Keras  (0) 2023.04.27
[2] Machine Learning (ML basics)  (0) 2023.04.20
Comments