전체 글 84

Deep Residual Learning for Image Recognition (CVPR 2016)

Resnet 이란 이름으로도 유명한 이미지 분류 분야의 논문입니다. 깊이가 깊어질 수록 학습 성능이 저하되는 문제를 잔여 학습(Residual training) 이란 기법을 사용해 층이 깊어질 때 발생하는 degradation problem 을 해결한 논문으로, 간단한 아이디어로 구성되어 있지만 최신 논문들에서도 계속 인용될만큼 핵심적인 논문입니다. 제 깃허브 링크에 가시면 영문으로 2페이지 요약 작성한 PDF 파일을 다운 받으실 수 있습니다. Github 링크 : https://github.com/Song-Joo-Young/Deep-Learning-Paper-Review/blob/main/README.md Deep Residual Learning for Image Recognition Abstract ..

[DL] MNIST ( Modified National Institute of Standards and Technology database )

이번 포스팅은 MNIST 데이터셋을 이용해 직접 신경망의 순전파를 확인해보고, 일종의 실습을 하는 포스팅입니다. MNIST 는 대표적인 기계학습 데이터셋으로 0부터 9까지의 숫자 이미지로 구성된 데이터셋입니다. MNIST의 이미지 데이터는 $28 \times 28$ 크기의 흑백 이미지이며, 각 픽셀은 $0$ ~ $255$ 까지의 밝기 값을 가집니다. 또한 각 이미지에는 그 숫자에 대한 레이블이 붙어있습니다. 이 데이터셋 내부에 이미 훈련 이미지가 $60,000$장, 시험 이미자가 $10,000$장 준비되어 있습니다. 훈련 이미지들을 사용해 학습된 모델로 시험 이미지를 분류해보는 것이 오늘의 목적입니다. 오늘은 학습된 매개변수로 사용해 분류가 진행되는 과정(순전파, Forward propagation)만 ..

[Python] Numpy 라이브러리 사용법 총 정리 [지속 업데이트]

제 스스로도 필요할 때마다 찾아보기 위해 모르는 내용이 생기면 지속적으로 업데이트 하는 Numpy 사용법 포스팅입니다. 내용이 많기 때문에 목차의 하이퍼링크나 Ctrl+F 를 통해 필요한 내용을 찾아 보시면 되겠습니다. 아래는 공식문서입니다. NumPy reference — NumPy v1.25 Manual numpy.org [목차] Numpy 배열 초기화하기 Numpy 배열 가로 축으로 합치기 Numpy 세로 축으로 합치기 Numpy 배열 형태 변경하기 Numpy 배열 나누기 서로 다른 형태 Numpy 배열 연산 Numpy 마스킹 연산 Numpy 집계 함수 Numpy 객체 저장 및 불러오기, 객체 복사 Numpy 원소 정렬 Numpy 중복 원소 제거 Numpy 균일한 간격의 데이터 생성 Numpy 배열..

[DL] 인공 신경망 ( Artificial neural network, ANN ) - Forward Propagation

인공신경망이란? 인공 신경망 ( Artificial neural network, ANN ) 이란 앞서 배웠던 퍼셉트론과 활성 함수의 아이디어를 결합한 모델을 뜻합니다. 즉 인공신경망은 시냅스의 결합으로 네트워크를 형성한 인공 뉴런(노드)가 학습을 통해 시냅스의 결합 세기를 변화시켜 문제 해결 능력을 가지는 모델을 전반적으로 지칭하는 단어입니다. 위 같은 인공신경망은 행렬을 통해 구현할 수 있습니다. 입력층을 Input layer, 중간의 은닉층을 Hidden layer, 출력층을 Output layer 라고 부릅니다. 이 때 $x_i, a_j^{(i)}, W^{(j)} $ 들이 의미하는 바는 아래와 같습니다. $$ a_j^{(i)} : \text{“Activation" of the i-th unit in..

[DL] 활성 함수 ( Activation function )

활성 함수란? ( Heaviside, Sigmoid, ReLU ) 지난 포스팅에서 살펴본 퍼셉트론의 구조에 대한 그림을 다시 살펴보면 오른쪽에 활성 함수(Activation Function) 이라는 것이 있습니다. 다시 한 번 퍼셉트론을 나타낸 수학적 수식을 살펴보면 아래와 같습니다. $$ y=\begin{cases}0,\ \quad \ \ \ b+w_1x_1+w_2x_2\ \le 0\\1,\quad \ \ \ \ b+w_1x_1+w_2x_2\ >0\end{cases} \quad \quad ↔ \quad \quad y = h(w_1x_1+w_2x_2+b) $$ 이 때 $h$ 는 헤비사이드 함수(Heaviside function) (= 단위 계단 함수(unit step function)) 을 뜻합니다. $..

[DL] 퍼셉트론 ( Perceptron )

퍼셉트론(Perceptron) 이란? 퍼셉트론(Perceptron) 이란 사람의 뇌신경 세포의 동작과정을 흉내내어 만든 수학적 모델으로 신경망의 기원이 되는 알고리즘입니다. 따라서 퍼셉트론의 구조를 잘 이해하는 것이 앞으로의 신경망과 딥러닝으로 나아가는데 중요한 밑거름이 됩니다. 퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호를 출력합니다. 퍼셉트론 신호는 0이나 1 둘 중의 하나의 값을 가지게 됩니다. $$ y=\begin{cases}0,\ \quad \ \ \ w_1x_1+w_2x_2\ \le \theta \\1,\quad \ \ \ \ w_1x_1+w_2x_2\ >\theta \end{cases} $$ 위의 예시에서 $x_i$ 들은 입력(input) 신호, $y$는 출력 신호, $w_i$ 들은 ..

[C++] STL ( pair, vector, list, iterator, algorithm 사용 예시 코드 )

[C++] STL 정리 ( pair, vector, stack, queue, deque, map, set, algorithm ) STL(Standard Template Library) 는 C++ 에서 가장 자주 사용되는 라이브러리 중 하나입니다. PS (Problem Solving)을 공부하기 전에 필수적으로 익혀야 하는 라이브러리입니다. 문제를 푸는데 필요한 알고리즘 songsite123.tistory.com 위 포스팅에서 STL에 대해 전반적으로 총정리를 해봤습니다. 오늘은 이 중에서도 자주 사용되는 pair, vector, list 컨테이너에 대해 집중적으로 살펴보고 iterator 의 응용, 그리고 algorithm 을 사용해보는 방법까지 알아보도록 하겠습니다. STL(Standard Templa..

C++/C++ 기초 2023.07.18

[C++] 제네릭 클래스 ( Generic class )

[C++] 템플릿 ( Template ) - 함수 템플릿 / 클래스 템플릿 C++ 이 가지는 특징 중 하나로 일반화 프로그래밍(Generic programming) 을 들 수 있습니다. 일반화 프로그래밍이란 쉽게 말하자면 일반적인, 다양한 상황에서도 같은 코드로 적용할 수 있는 것을 말합 songsite123.tistory.com 위 포스팅에서 제너릭의 개념과 이를 위한 template 의 사용법과 예제를 확인했습니다. 맨 마지막에 제네릭 클래스에 대해 다루긴 했는데요 너무 간단하게 다룬 것 같아 오늘은 예제 위주로 확인해보며 template 를 이용한 제네릭 클래스에 대해 더 자세히 알아보는 포스팅입니다. 제네릭 클래스를 만들기 위해서는, 클래스의 선언부와 구현부를 모두 template 로 선언해야 합..

C++/C++ 기초 2023.07.17

[C++] 순수 가상 함수와 추상 클래스 ( Pure virtual function and Abstract class )

[C++] 가상 함수와 오버라이딩 ( Virtual function and overriding ) 오버라이딩이란, 부모 클래스로부터 상속받은 메소드의 내용을 재정의(변경) 해야 하는 것을 오버라이딩이라고 합니다. 다른 말로 파생 클래스에서 기본 클래스에 작성된 가상 함수를 재작성하 songsite123.tistory.com 위 포스팅에서 가상함수와 오버라이딩의 개념에 대해 알아보았습니다. 이번 포스팅에서는 순수 가상 함수를 사용한 추상 클래스에 대해 알아보도록 하겠습니다. 순수 가상 함수 (Pure virtual function) 먼저 순수 가상 함수(Pure virtual function) 이란 함수의 코드가 없고 선언만 있는 가상 함수 를 말합니다. 순수 가상 함수는 멤버 함수의 원형 뒤에 = 0; ..

C++/C++ 기초 2023.07.17

[C++] 파생 클래스와 기본 클래스의 생성자/소멸자 호출 관계 + 가상 소멸자

[C++] 생성자와 소멸자 ( Constructor and Destructor ) 포스팅의 목차 / 링크 1. 생성자 (Constructor) 2. 디폴트 생성자 (Default Constructr) 3. 복사 생성자 (Copy Constructor) 4. 소멸자 (Destructor) 5. 생성자/소멸자 실행 순서 클래스를 통해 객체를 생성하면, 해당 객 songsite123.tistory.com 클래스는 생성자와 소멸자가 최소 1개씩 있으며, 객체의 생성과 호출에 생성자와 소멸자가 각각 실행되는 걸 위 포스팅에서 배웠습니다. 오늘 포스팅은 상속에 초점을 맞추어 파생 클래스의 객체가 생성되거나 소멸 될 때, 기본 클래스의 생성자와 소멸자가 호출되는지, 파생 클래스의 생성자와 소멸자가 호출되는지, 그 사..

C++/C++ 기초 2023.07.17
728x90