# [AI] 인공지능 개요

## AI vs ML vs DL

---

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/155737_aaDYhiLAwYwkrdpvWe?q=80&s=1280x180&t=outside&f=webp)

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/155740_MpKyDFiVdKP9aCeW7L?q=80&s=1280x180&t=outside&f=webp)

| **AI** **(Artificial Intelligence)** | 인간의 지적 능력을 컴퓨터를 통해 구현 | 규칙 기반 알고리즘 |
| --- | --- | --- |
| **ML** **(Machine Learning)** | 컴퓨터가 스스로 학습하여 인공지능의 성능 향상 | 선형회귀, 랜덤포레스트 |
| **DL** **(Deep Learning)** | 머신러닝 알고리즘의 종류 (인공신경망) | CNN, RNN, Transformer |

## 머신러닝 Machine Learning

---

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/155904_hChFKb8lRnjCmMzPXn?q=80&s=1280x180&t=outside&f=webp)

- “컴퓨터가 명시적으로 프로그램되지 않고도 학습할 수 있도록 하는 연구 분야”

- **과거 데이터**로부터 숨겨진 **규칙**을 찾아 일반화 → **미래 예측**에 활용

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/155911_ADKAsikloKOQGtZACw?q=80&s=1280x180&t=outside&f=webp)

**전통적인 프로그래밍**

- 규칙 기반 Rule-Based

- 모든 상황 포괄 어려움 → 예외 취약

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/155914_MpujNuzVpfzNGwidR3?q=80&s=1280x180&t=outside&f=webp)

**머신러닝**

- 데이터 기반 Data Based

- 데이터만 준비하면된다

### **학습 Learning**

- 머신이 규칙을 알아내는 과정

- 인간의 입장에서 머신이 **훈련 training** 시키는 과정

- 학습 데이터가 많을 수록 유리하다

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/155936_XgFJrGJdUgGcaGmGyg?q=80&s=1280x180&t=outside&f=webp)

- 데이터: $(y_i, x_i), i=1, 2, 3, …, n$

    - 반응변수 response variable: $y_i$

    - 설명변수 explanatory variable: $x_i = (x_{i1}, x_{i2}, …, x_{ip})$

- 반응변수 Y와 설명변수 X간의 관계를 찾는것 → **훈련**

y = f(x)

- 전통적: f(), x → y

- 머신러닝 x, y → f()

**Learning 방법**

- 다양한 학습 알고리즘들이 존재

- KNN, SVM, regression, random forest, deep neural network, …

- **전통적인 문제 해결**: 인간 분석자가 데이터를 연구 → 원리, 이론 도출

- **Machine Learning**: 데이터와 학습 방법을 제시 → 프로그램 스스로 원리나 이론 도출

**Learning 결과**

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/160050_3vmJZYl7C4ZzLp9XFN?q=80&s=1280x180&t=outside&f=webp)

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/160055_grOZT1h4tFykstnVZN?q=80&s=1280x180&t=outside&f=webp)

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/160059_areL8L3LAqxlFgOtAd?q=80&s=1280x180&t=outside&f=webp)

- 어떤 방법으로 학습 시켰는지에 따라 model의 형태는 다양

### Machien Learning 분류

**Classification**

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/160135_o3D7FCyCVq4T0g9Q8I?q=80&s=1280x180&t=outside&f=webp)

**Regression**

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/160141_Bvxt6qAUQmn44WMHzO?q=80&s=1280x180&t=outside&f=webp)

**Clustering**

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/160144_oQjlpXqEf3xmYbheDN?q=80&s=1280x180&t=outside&f=webp)

| **지도 학습** **Supervised Learning** | **비지도학습** **Unsupervised Learning** | **강화학습** **Reinforcement Learning** |
| --- | --- | --- |
| 회귀 Regression 분류 Classification | 군집화 Clustering |  |
| 설명변수 X, 반응변수 Y | 설명변수 X | 행동 심리학 기반 |

### 학습 모델 개발 과정

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/160349_KHAq0FC9Urb1nP3xQY?q=80&s=1280x180&t=outside&f=webp)

**데이터 수집**

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/160416_8TrnC7wnBL2tYSFptu?q=80&s=1280x180&t=outside&f=webp)

- 데이터의 품질이 학습된 모델의 품질을 결정한다 (많고 다양한 데이터를 수집해야함)

- 데이터의 형태에 따라 다양한 방법으로 수집 가능

- 대표성 있는 훈련 데이터를 수집하는 것이 중요 → 타겟 집단을 대표해야함

- 샘플수가 크더라도 샘플링 편향이 발생할 수 있다

**데이터 전처리**

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/160428_bfOKxIBd5Yk1dOcxHC?q=80&s=1280x180&t=outside&f=webp)

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/160436_M87wiMlnLbsxtST9H1?q=80&s=1280x180&t=outside&f=webp)

- 머신러닝에서 가장 중요한 작업 중 하나 → 데이터를 변환하여 작업 처리하는 것

- 컴퓨터는 숫자로만 학습 가능 → 머신러닝을 위해 모든 데이터를 숫자로 바꿔야 한다

- 데이터 전처리는 머신에게 학습시키기 위한 데이터프레임을 만드는 것

- 데이터 전처리를 통해 변수 간 관계를 파악하고 변수들의 특징을 더 잘 이해할 수 있다

**모델링 및 훈련**

- 적절한 알고리즘을 선정하여 코드 작성, 학습시킨다

- 데이터 타입에 따라 모델 구축/목적에 따라 선정하는 모델이 달라진다

- **모델 평가**: 모델이 잘 학습되었는지 판단하는 다양한 **평가지표**가 존재

    - **모델 정확도 (Accuracy)**: 모델의 예측/분류 등 성과에 대한 지표

    - **모델 복잡도 (Complexity**): 모델의 학습 과정에서 소요되는 계산량

    - **모델 해석도 (Interpretability)**: 학습 결과에 대한 해석력이 높을수록 모델 피드백이 쉬움

    - **모델 확장도 (Scalability)**: 데이터의 추가에 따른 모델의 정확도 상승이 어디까지 가능한지에 대한 지표

- **모델 배포**: 배포 후, 성능을 지속적으로 체크

### Train, Test, Validation

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/160453_UHiN56aFKiijJPTsRj?q=80&s=1280x180&t=outside&f=webp)

Training \ set:Validation \ set:Test \ set = 60:20:20

- 머신러닝, 딥러닝 모델은 데이터셋을 나누어 학습

- 정해진 룰은 없지만 위와 같은 비율을 일반적으로 사용

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/160521_uIfJHf4rjieW2EPhCo?q=80&s=1280x180&t=outside&f=webp)

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/160524_sJ6ImGB5kRtskNTv3r?q=80&s=1280x180&t=outside&f=webp)

**Training data (50 - 75%)**

- **과거 데이터**의 역할

- training set은 k개 만큼 나누어 **교차 검증 cross-validation**에 사용한다

**Validation data (나머지)**

- 학습 과정에서 만들어지는 모델을 평가 → 더 나은 모델을 만드는 데 기여

- 학습 방법에 따라 필요치 않은 경우도 있음

**Test data (10 - 30%)**

- **미래 데이터**의 역할

- 학습에 사용하지 않은 일부 데이터를 미래 데이터로 간주

- 미래 예측시 모델이 어느 정도의 성능을 보일지를 판단하는 자료

![Image](https://upload.cafenono.com/image/slashpagePost/20250201/160540_k7k9Xgd0ImXEg7AtMg?q=80&s=1280x180&t=outside&f=webp)

- **Training accuracy**: 모델이 과거 데이터를 얼마나 잘 설명할 수 있는가?

- **Test accuracy**: 모델이 미래의 데이터를 얼마나 잘 예측할 수 있는가?

- 일반적으로 Training accuracy > Test accuracy

### 머신러닝 라이브러리

**scikit-learn**

```javascript
install scikit-learn
```

- 분류, 회귀, 차원축소 등 머신러닝 관련 알고리즘들을 구현

- 데이터 전처리, hyper-parameter tuning, 모델 평가 기능도 제공

**pandas**

```javascript
pip install pandas
```

- Numpy의 배열은 주로 숫자를 저장

- Pandas의 data frame은 문자, 숫자 컬럼을 함께 저장 가능

## 딥러닝

---

> 머신러닝 알고리즘 중 한 종류, 데이터 유닛의 층을 여러 개 쌓아 구조적이지 않은 데이터에서 고수준 표현을 학습

- 최근 인공지능 개발이 이루어지고 있는데, 많은 분야에서 딥러닝 기술들이 사용된다.

- 대부분의 딥러닝 시스템은 여러 **은닉층**을 쌓은 **인공 신경망**으로 심층 신경망과 거의 동의어로 사용되고 있다.

- 딥러닝의 대표적인 라이브러리에는 **TensorFlow**와 **Keras**가 있다.

**딥러닝용 데이터**

- 보통의 머신러닝 알고리즘은 테이블 형태의 **정형 데이터**를 입력으로 사용

- 딥러닝 알고리즘은 **비정형 데이터**에도 적용 가능하다

- 생성 모델링은 이미지, 텍스트 등 비정형 데이터를 생성하는 것이 관심사

**신경망**

- 딥러닝을 이해하고 인공지능을 구현하는 데 필요한 첫 출발점

- 사람들은 인간의 뇌를 모방하여 인공지능을 구현하려고 한다

- 인공신경망을 알기 위해선 사람의 뇌를 먼저 알아야 한다.

### 딥러닝 라이브러리

**TensorFlow**

- 구글에서 개발한 TensorFlow는 수치 계산과 대규모 머신러닝을 위한 오픈 소스 라이브러리

- 다수의 머신러닝과 딥러닝 모델과 알고리즘을 결합해 공통 메타포를 통해 유용성을 높임

- 프론트 엔드 API를 제공하며 성능이 우수한 C++로 에플리케이션을 실행

**PyTorch**

- 페이스북의 AI 연구팀이 2016년에 만든 오픈소스 라이브러리

- NLP 및 컴퓨터 비전과 같은 딥 러닝 애플리케이션에 유용

- 빠른 실행 속도, CPU 및 GPU에서 작동할 수 있는 유연한 라이브러리

**Keras**

- 파이썬으로 구현된 간결한 딥러닝 라이브러리

- 직관적 API 제공

- Tensorflow, theano, CNTK 등 딥러닝 엔진 사용

- 구글 엔지니어인 프랑소와 쏠레에 의해 개발, 유지보수

For the site tree, see the [root Markdown](https://slashpage.com/yerim-devnote.md).
