CNN(Convolutional Neural Network)란? 전체 프레임워크 📌 1. CNN의 기본 개념 CNN은 이미지와 같은 2차원 또는 3차원 구조 데이터를 처리하기 위해 설계된 딥러닝 아키텍쳐다.전통적인 DNN은 입력을 일렬로 펴(flatten)서 처리하기 때문에, 공간적 구조(예: 이미지의 픽셀 간 관계)를 고려하지 못하는 한계가 있다.이를 극복하기 위해 CNN은 입력의 지역적 정보(local pattern)를 학습할 수 있도록 고안되었고, 시각 영역에서의 혁신적인 성능을 보여주며 다음과 같은 분야에서 광범위하게 사용된다: 이미지 분류, 물체 탐지, 얼굴 인식, 의료 영상 분석, 자율주행 카메라 비전 📌 2. CNN의 알고리즘 구조1) 합성곱? 합성곱(Convolution)이란 두 함수 ..
📌 인공신경망(ANN)이란? 1. ANN 기본 개념 인공신경망(Artificial Neural Network, ANN)은 인간의 두뇌 신경세포(뉴런)의 구조와 작동 원리를 본떠 만든 컴퓨팅 모델이다. 사람의 뇌는 수십억 개의 뉴런이 서로 연결되어 정보를 전달하고 처리하는데, ANN은 이 개념을 수학적으로 모델링하여 데이터로부터 학습하고, 예측하고, 분류할 수 있는 시스템을 구현한다. 초기의 ANN은 단순한 입력-출력 관계를 학습하는 모델이었지만, 현재에 와서는 딥러닝(Deep learning)의 근간이 되는 구조로 발전하여 이미지 인식, 자연어 처리, 게임, 자율주행 등 다양한 분야에서 활용되고 있다. 2. ANN의 알고리즘 구조 1) 기본 구조ANN은 입력층, 은닉층, 출력층의 세 가지 계층으로 구성..
경사하강법(Gradient Descent)와 역전파 알고리즘(Backpropagation)은 딥러닝하면 빼놓을 수 없이 항상 같이 나오는 알고리즘들 입니다. 이들이 뭐고 왜 중요할까요? 딥러닝의 학습 구조는 크게 아래와 같이 이루어져있으며 이를 반복합니다. 1. 입력 데이터를 받아 출력 계산 (Forward Propagation; 순전파)2. 예측 결과와 정답 비교 >> 오차 계산 (Loss)3. 오차를 기준으로 가중치 수정 (Back Propagation + Gradient Descent) 조금 더 자세히 설명해보면 순전파를 통해 output을 계산하고 해당 output과 정답 label을 비교하여 cost function을 계산합니다.이 후 역전파를 통해 각 가중치에 대한 편미분 값 계산. 경사하강법..
딥러닝(Deep Learning)은 인공지능(AI)의 한 분야로, 인간의 뇌가 정보를 처리하는 방법을 모방하여 데이터를 학습하는 기술입니다.(뉴런!). 최근 핫한 컴퓨터 비전, 자연어 처리, 음성 인식 등등 모두 딥러닝이 베이스가 된 기술들입니다. 때문에 인공지능 분야를 공부하는 분들은 딥러닝이 매우 기초가 된다는 것을 알 것이라 생각합니다. 하지만, 머신러닝과 다르게 딥러닝에 대한 지식이 부족한 분들이 많을 것이라 생각합니다. 머신 러닝을 좀 더 깊이 바라본 것이지만 그 안의 내용은 머신러닝을 뛰어넘는 지식을 요구하는 경우가 많습니다. 그럼 딥러닝의 기본 개념과 구성 요소 등을 한 번 알아보겠습니다. 📌 딥러닝 기본 개념딥러닝은 기본 적으로 다층 신경망(Deep Neural Network, DNN)..
Pytorch를 이용해서 DL 프레임워크를 공부하다보면 나오는 squeeze, unsqueeze 함수가 있습니다. 과연 이것이 무엇인지 확인해 보겠습니다. 수학적인 내용도 필요하고 이러한 함수가 왜 필요한지 알아봅시다. 📌 squeeze와 unsqueeze 함수의 역할 1. squeeze 함수 'squeeze()' 함수는 tensor의 차원 중에서 크기가 1인 차원을 제거합니다. 다시 말하면? 불필요한 1차원의 축을 없애주는 것입니다. tensor_a = torch.zeros(1, 3, 1, 5)print(tensor_a.shape) >> (1, 3, 1, 5)tensor_b = tensor._a.squeeze()print(tensor_b.shape)>> (3, 5) 이렇게 tensor_a에 1차원이 ..
오늘은 PyTorch를 이용하여 ANN을 구현해보려고 한다.인공신경망은 뭔지 알고 있는 상황이고 기초적인 코드를 정리해보며 개념과 의미에 대해 생각해보려고 한다. # importimport torchimport torch.nn as nnimport torch.optim as optimfrom torch.utils.data import DataLoader, TensorDatasetfrom sklearn.datasets import load_breast_cancerfrom sklearn.model_selection import train_test_splitfrom sklearn.preprocessing import StandardScaler # 데이터 로드 및 전처리 본 포스팅에서는 유방암 데이터를 가져와 ..
부스팅 모델 중에서 가장 흔히 쓰이는 세 가지가 XGBoost, CatBoost, 그리고 LightGBM일 것이다.(최근에는 다른 여러 부스팅 모델이 나온 것으로 알고 있다.) XGBoost와 CatBoost에 대해선 이미 포스팅 했고, 이번엔 LigthGBM에 대해서 리뷰해보려고 한다. 간단하게 설명해보면, 이름 그대로 light 가볍다라는 뜻이다. 이름만큼 규모가 큰 데이터에서 빠른 학습 속도로 유리함을 가지고 있다. Microsoft에서 개발한 그레디언트 부스팅 프레임워크로 쉽게 사용할 수 있다. 단, 규모가 비교적 작은 데이터에서는 과적합이 생길 수 있으므로 유의해서 사용하자. 📌 1. Introduction 기존에 GBDT(Gradient Boosting Decision Trees)는 모든 ..
CatBoost 2. 트리 구축은 저번 [1. 알고리즘 설명에 이어집니다.] 📌 1. 트리 구축하기 CatBoost의 특징적인 부분인데, 트리를 구축할 때 기본 예측기는 oblivious 결정 트리라고 하는 결정 테이블을 사용한다.[Python만 확인해보았는데 oblivious 말고도 파라미터 지정을 통해 일반적인 트리를 사용할 수 있다.] Oblivious??쉽게 설명하면 트리의 같은 깊이에 해당하는 노드들은 동일한 분할 기준이 사용되는 결정트리이다. 예를 들어, 일반적인 트리는 아래와 같이 만들어질 수 있다. [ Color == 'Red' ]| |[ Age >= 20 ] [..
📌 CatBoost? CatBoost는 부스팅 모델의 하나로, 이름의 Cat은 Categorical의 줄임말이다. 이름에서 볼 수 있듯이 범주형 변수를 대상으로 자주 사용되며 예측 성능도 우수한 편이다. 그럼 CatBoost를 소개하는 본 논문 CatBoost : unbiased boosting with categorical features를 리류해보자. 📌 1. Introduction 일반적인 GBM(Gradient Boosting Model)은 실제 많이 사용되었었다(본 논문이 published된 2019년 기준). 부스팅 모델의 특성처럼 약한 모델들을 가법적으로 결합하여 함수 공간에서 그레디언트 하강법을 수행하는 모델이다. 본 논문에서는 기존 GBM 구현이 아래와 같은 통계적 문제에 직면한다고 ..
텐서플로우를 통한 선형회귀 예제입니다. 사실 처음 해볼때 이럴꺼면 사이킷런을 쓰는게..? 라는 생각을 했는데, 좀더 복잡하고 큰 데이터를 다루거나 복잡한 모형을 다룰 때 굉장히 효율적일거라는 생각이 들더군요. 좋은 경험이었습니다. 먼저 데이터를 생성해주고 단순선형회귀 식의 Weight와 bias를 설정해줍니다.# datax_train = [1,2,3]y_train = [1,2,3]# random_normal은 우리가 아직 W, b를 모르기 때문에 rank가 1인 값을 랜덤하게 넣어주는 것.W = tf.Variable(tf.random.normal([1]), name = 'weight')b = tf.Variable(tf.random.normal([1]), name = 'bias') 여기서 Variable는..