본문 바로가기
반응형

ML & DL26

[DL] CNN 합성곱 신경망 왕초보 기초 개념 📌들어가며 이번 포스팅에서는 CNN 합성곱 신경망에 대해서 포스팅합니다. CNN 합성곱 신경망? Convolutional Neural Networks의 약자로 딥러닝에서 주로 영상 데이터 등을 처리할 때 쓰이는 신경망이다. CNN 합성곱 신경망 이름만 들어도 어려운 것 같은 CNN은 단언컨대 어렵지 않다. 사실 CNN이 어렵다고 느껴지는 이유는 CNN 개념이 어려운 것 보단 CNN을 왜 사용하는지를 자세히 모르기 때문이라고 생각한다. 때문에 CNN의 개념을 바로 설명하기 보다 CNN을 사용하는 이유에 대해 먼저 설명하고자 한다. CNN(합성곱 신경망) 왜 사용할까? 이미지등 영상 데이터들은 주로 2차원(GrayScale), 3차원(Color)의 형태를 이룬다. 기존의 일반 DNN(깊은 신경망)은 1차원 .. 2023. 10. 3.
[DL] Chain Rule이란? 📌들어가며 이번 포스팅에서는 저번 포스팅 Backpropagation을 이해하기 위해 알아야 하는 Chain Rule에 대해 배워본다. Chain Rule Chain Rule 우리 말로 연쇄 법식인 체인룰은 합성 함수의 미분에 대한 성질이다. 합성 함수에 대해 간단하게 설명하면 f(t)함수의 매개변수가 g(x)라는 함수의 결과값인 함수를 말한다. 즉, t = g(x)라고 하면 f(g(x))와 같이 표현할 수 있고 (f∘g)(x)라고도 표현할 수 있다. 체인룰은 아래와 같다. 합성 함수의 미분은 합성 함수를 구성하는 각 함수의 미분의 곱으로 나타낼 수 있다. 우리가 배웠던 합성 함수의 도함수 공식은 다음과 같다. 위의 공식을 보면 f(g(x))'을 표현한 것인데 이때 합성 함수를 구성하는 각 함수는 f(g.. 2023. 9. 22.
[DL] Backpropagation 역전파 이해하기 📌들어가며 본 포스팅에서는 Backpropagation 역전파에 대해서 알아봅니다. 혹여 잘못된 부분이 있거나 질문이 있으시면 댓글 남겨주세요. Back Propagation(역전파)이란? 역전파는 신경망의 각 노드가 가지고 있는 가중치(Weight)와 편향(Bias)을 학습시키기 위한 알고리즘으로 목표(Target)와 모델의 예측 결과(Output)가 얼마나 차이 나는지 확인하고 그 오차를 바탕으로 가중치(Weight)와 편향(Bias)를 뒤에서 부터 앞으로 갱신해가는 것을 의미한다. 역전파를 이해하기 위해서 순전파를 우선적으로 설명한다. Forward Propagation(순전파) 위 그림은 역전파의 이해를 위해서 3개의 층을 갖는 인공 신경망을 가져왔다. 해당 인공 신경망을 대략적으로 설명하면 두개.. 2023. 9. 21.
[DL 논문리뷰] ResNet(Deep Residual Learning for Image Recognition) 논문 리뷰 📌들어가며 본 포스팅은 딥러닝 논문중 Deep Residual Learning for Image Recognition 논문을 입문자 입장에서 이해할 수 있도록 리뷰합니다. 혹여 잘못된 부분이 있거나 질문이 있으시면 댓글 남겨주세요. 개요 CNN에서 레이어의 깊이는 중요한 요소로 여겨졌고, 레이어의 깊이가 깊은 모델일 수록 더 좋은 성능을 보여왔다. 때문에 딥러닝 연구자들은 네트워크의 깊이를 중요한 요소로 여겼고 DCNN은 이미지 분류 분야에서 획기적인 발전을 이끌었다. ResNet팀은 깊이를 늘리는 것만으로 쉽게 성능을 향상 시킬 수 있는지 의문을 품고 실험을 진행하게 된다. 실험 결과는 위 그림과 같다. 깊은 모델일 수록 더 좋은 성능을 갖는다고 생각했던 예상과 다르게 단순히 깊이를 늘리는 것만으로는 .. 2023. 9. 20.
[PyTorch] 실제 데이터를 텐서로 표현해보기 이미지 파일 로딩 이미지는 여러 파일 포맷으로 저장될 수 있지만 다행히도 파이썬에서는 다양한 방식으로 이미지를 로딩할 수 있다. 코드의 img는 너비와 높이에 해당하는 두 개의 공간 정보와 색 공간을 포함하는 3차원 배열 같은 넘퍼이 객체다. 현재 이미지는 H * W * C로 되어있지만 파이토치 모듈은 텐서가 C * H * W, 즉 채널, 높이, 너비 순으로 배치되어야 한다. 레이아웃 변경하기 차원을 변경하려면 텐서의 permute 메소드를 사용한다. 앞에서 얻은 H * W * C 입력 텐서에 대해 채널2와 채널0 그리고 채널1 순으로 나열되도록 변경하면 적절한 레이아웃이 된다. 이 연산은 텐서 복사본을 만들지 않는다는 점에 유의해야 한다. out은 img 저장 공간과 동일하며 단순히 텐서 레벨에서 크기.. 2023. 4. 24.
[파이썬 딥러닝] 활성화 함수 계층 구현하기 ReLU 계층 활성화 함수로 사용되는 ReLU 수식은 다음과 같습니다. x에 대한 y의 미분은 다음과 같습니다. 순전파 때의 입력인 x가 0보다 크면 역전파는 상류의 값을 그대로 하류로 흘립니다. 반면, 순전파 때 x가 0 이하면 역전파 때는 하류로 신호를 보내지 않습니다.(0을 보냅니다.) 계산 그래프로는 다음과 같습니다. class Relu: def __init__(self): self.mask = None def forward(self, x): self.mask = (x 2023. 3. 29.
[파이썬 딥러닝]순전파와 역전파 기초 덧셈 노드의 순전파와 역전파 순전파는 우리가 알고 있는 덧셈입니다. 위 그림을 보면 덧셈노드를 통해 더하게 됩니다. 따라서 순전파를 통과하면 z = x + y라는 식이 나옵니다. 이 식을 편미분을 하게되면 z를 x에 대해 미분해도 y를 통해 미분해도 모두 1이 됩니다. 따라서 역전파때 상류에서 전해진 미분값을 그대로 하류로 흘리게 됩니다. 곱셈 노드의 순전파와 역전파 곱셈 노드도 순전파는 덧셈 노드와 크게 다르지 않습니다. 우리가 알고 있던 곱셈입니다. z = xy라는 식을 미분하면 z를 x에 대해 미분 했을대 y가 되고 z를 y에 대해 미분 했을때 x가 남게 됩니다. 따라서 곰셈의 역잔파에서는 입력 신호를 바꾼 값을 곱하여 흘려 보내줍니다. 때문에 곱셈의 역전파는 순방향 입력 신호의 값이 필요합니다. .. 2023. 3. 28.
[파이썬 딥러닝] 학습 알고리즘 구현 신경망 학습 절차 전제 신경망에는 적응 가능한 가중치와 편향이 있고, 이 가중치와 편향을 훈련 데이터에 적응하도록 조정하는 과정을 '학습'이라고 합니다. 신경망 학습은 다음과 같이 4단계로 수행합니다. 1단계 - 미니배치 훈련 데이터 중 일부를 무작위로 가져옵니다. 이렇게 선별한 데이터를 미니배치라 하며, 그 미니배치의 손실 함수 값을 줄이는 것이 목표입니다. 2단계 - 기울기 산출 미내배치의 손실 함수 값을 줄이기 위해 각 가중치 매개변수의 기울기를 구합니다. 기울기는 손실 함수의 값을 가장 적게 하는 방향을 제시합니다. 3단계 - 매개변수 갱신 가중치 매개변수를 기울기 방향으로 아주 조금 갱신합니다. 4단계 - 반복 1 ~ 3단계를 반복합니다. 이것이 신경망 학습이 이뤄지는 순서입니다. 이는 경사 하.. 2023. 3. 24.
[파이썬 딥러닝] 수치 미분 미분 미분이란? 한순간의 변화량을 표시한 것 수식 파이썬으로 구현한 미분 def numerical_diff(f, x): h = 1e-50 return (f(x + h) - f(x)) / h 그러나 이 방식은 반올림 오차 문제를 일으킵니다. 반올림 오차는 작은 값이 생략되어 최종 계산 결과에 오차를 생기게 합니다. import numpy as np np.float32(1e-50) [출력] 0.0 위와 같이 작은 값을 넣어 0으로되어 버리는 오차를 말합니다. 이를 개선하기 위해서 두가지 방법이 있습니다. 첫째로는 h를 10 ^ -4를 사용하여 컴퓨터로 계산하는데 문제가 되지 않도록 하는 방법입니다. 둘째로는 차분을 이용하는 방법입니다. 차분 '진정한 미분'은 x 위치의 함수의 기울기에 해당하지만, 이번 구현.. 2023. 3. 22.
[파이썬 딥러닝] 신경망 학습 학습 학습이란? 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것을 뜻한다. 훈련 데이터와 시험 데이터 기계 학습 문제는 데이터를 훈련 데이터(train data)와 시험 데이터(test data)로 나눠 학습과 실험을 수행하는 것이 일반적입니다. 우선 훈련 데이터만 사용하여 학습하면서 최적의 매개변수를 찾습니다. 그런 다음 시험 데이터를 사용하여 앞서 훈련한 모델의 실력을 평가하는 것입니다. 훈련 데이터와 시험 데이터를 나누는 이유는 우리가 원하는 모델은 범용적으로 사용할 수 있는 모델이기 때문입니다. 이 범용 능력을 제대로 평가하기 위해 훈련 데이터와 시험 데이터를 분리하는 것이죠. 범용 능력은 아직 보지 못한 데이터로도 문제를 올바르게 풀어내는 능력입니다. 이 범용 능력을 획득하는 .. 2023. 3. 16.
[파이썬 딥러닝] 신경망 퍼셉트론에서 신경망으로 신경망을 그림으로 나타내면 가장 왼쪽 Input(입력층), 중간 Hidden(은닝층), 오른쪽 Output(출력층)이라고 합니다. 은닉층의 뉴런은 사람 눈에는 보이지 않는습니다. 퍼셉트론 복습 X1과 X2라는 두 신호를 입력받아 Y를 출력하는 퍼셉트론입니다. 이 퍼셉트론을 수식으로 나타내면 다음과 같습니다. 여기서 b는 편향을 나타내는 매개변수로, 뉴런이 얼마나 쉽게 활성화되느냐를 제어합니다. 한편, w1과 w2는 각 신호의 가중치를 나타내는 매개변수로, 각 신호의 영향력을 제어합니다. 위의 네트워크에는 편향 b가 보이지 않는데 편향 b를 명시한다면 다음과 같습니다. 활성화 함수 활성화 함수란 입력 신호의 총합이 활성화를 일으키는지를 정하는 역할입니다. 시그모이드 함수 신경망에서 .. 2023. 3. 14.
[PyTorch] 텐서를 GPU로 옮기기 & 텐서를 넘파이(Numpy)로 바꾸기 https://product.kyobobook.co.kr/detail/S000061353646 파이토치 딥러닝 마스터 | 엘리 스티븐스 - 교보문고 파이토치 딥러닝 마스터 | 파이토치 핵심 개발진이 직접 집필한 책으로, 최고 실무자가 바로 옆에 앉아서 딥러닝의 기초부터 실제 프로젝트 활용까지, 모델 성능 평가와 개선 방안을 차근차근 product.kyobobook.co.kr 이 글은 파이토치 딥러닝 마스터를 정리한 내용입니다. 지금까지 살펴본 텐서 저장 공간은 CPU 메모리에 대한 것이다. 파이토치의 텐서는 CPU 외 다른 프로세서인 GPU를 위한 메모리 공간에도 저장할 수 있다. 모든 파이토치 텐서는 여러 GPU 중에 특정 GPU 메모리 영역으로 이동할 수 있고 이렇게 대량 병렬 처리 연산을 빠르게 할.. 2023. 2. 28.
[PyTorch] 텐서 구조체 https://product.kyobobook.co.kr/detail/S000061353646 파이토치 딥러닝 마스터 | 엘리 스티븐스 - 교보문고 파이토치 딥러닝 마스터 | 파이토치 핵심 개발진이 직접 집필한 책으로, 최고 실무자가 바로 옆에 앉아서 딥러닝의 기초부터 실제 프로젝트 활용까지, 모델 성능 평가와 개선 방안을 차근차근 product.kyobobook.co.kr 이 글은 파이토치 딥러닝 마스터를 정리한 내용입니다. 텐서란? 데이터 처리와 저장을 위해 파이토치에서 제공하는 기본 자료구조로 딥러닝에서의 텐서는 임의의 차원을 가진 벡터나 행렬의 일반화된 개념. 다차원 배열(Multidimensional array)라고도 부르고 텐서의 차원 수는 텐서 안의 스칼라 값을 참조하기 위해 사용하는 인덱스.. 2023. 2. 25.
[PyTorch] 사전 훈련된 신경망 https://product.kyobobook.co.kr/detail/S000061353646 파이토치 딥러닝 마스터 | 엘리 스티븐스 - 교보문고 파이토치 딥러닝 마스터 | 파이토치 핵심 개발진이 직접 집필한 책으로, 최고 실무자가 바로 옆에 앉아서 딥러닝의 기초부터 실제 프로젝트 활용까지, 모델 성능 평가와 개선 방안을 차근차근 product.kyobobook.co.kr 이 글은 파이토치 딥러닝 마스터를 정리한 내용입니다. 이미지를 인식하는 사전 훈련된 신경망 이미지 인식을 위해 사전 훈련된 신경망 가져오기 사전 훈련된 모델은 torchvison.models에 있고, from torchvision import models를 import 한 후 dir(models)를 통해 모델들을 확인할 수 있다. 알.. 2023. 2. 20.
[파이썬 딥러닝] 퍼셉트론 퍼셉트론은 신경망의 기원이 되는 알고리즘 퍼셉트론이란? 퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호(전류나 강물처험 흐름)를 출력합니다. 퍼셉트론의 신호는 0과 1의 두 가지 값만 가집니다. 그림의 원을 뉴런 혹은 노드라고 부릅니다. 입력 신호가 뉴런에 보내질 때는 각각 고유한 가중치가 곱해지고 뉴런에서 보내온 신호의 총합이 정해진 한계를 넘어설 때만 1을 출력합니다. 이때 그 한계값을 임계값(Θ)이라고 합니다. 위 그림을 보면 입력 x1과 입력 x2가 들어온 후 각각의 가중치 w1과 w2와 곱해진 후 출력 y가 됩니다. 이때 y값이 일정 한계(Θ)를 넘어서면 1이 출력되고 넘지 못하면 0이 됩니다. 논리 회로 AND 게이트 AND게이트를 퍼셉트론으로 표현하면 위의 진리표대로 작동하도록 하는 w1.. 2022. 12. 21.
확률적 경사 하강법 확률적 경사 하강법 전체 샘플을 사용하지 않고 하나의 샘플을 훈련 세트에서 랜덤하게 골라 그 샘플에 대해서만 기울기를 계산하는 방법입니다. 샘플 데이터 셋에 대해서만 경사를 계산하므로, 매 반복에서 다뤄야 할 데이터 수가 매우 적어, 학습 속도가 매우 빠릅니다. 하나의 샘플만 대상으로 경사를 계산하므로, 메모리 소모량이 매우 낮으며, 매우 큰 훈련 데이터 셋이라 할지라도 학습 가능합니다다. 확흏적 경사 하강법에서 훈련 세트를 한 번 모두 사용하는 과정을 에포크(epoch)라고 부릅니다. 일반적으로 경사 하강법은 수십, 수백 번 이상 에포크를 수행합니다. 미니배치 경사 하강법 한 개씩 말고 무작위로 몇개의 샘플을 선택해서 경사를 따라 내려가는 방법입니다.\ 여러개의 샘플을 사용해 경사 하강법을 수행하는 방.. 2022. 8. 8.
로지스틱 회귀 - 다중 분류 https://glorychoi.tistory.com/entry/%EB%A1%9C%EC%A7%80%EC%8A%A4%ED%8B%B1-%ED%9A%8C%EA%B7%80Logistic-Regression 로지스틱 회귀(Logistic Regression) 로지스틱 회귀란? 로지스틱 회귀(logistic regression)는 이름은 회귀이지만 분류 모델입니다. 이 알고리즘은 선형 회귀와 동일하게 선형 방정식을 학습합니다. z = a * 무게 + b * 길이 + c * 대각선 + d * glorychoi.tistory.com 이진 분류와 다중 분류는 크게 다르지 않습니다. 여기에서도 LogisticRegression 클래스를 사용해 7개의 생선을 분류해 보면서 이진 분류와 차이점을 알아보겠습니다. 로지스틱 회귀.. 2022. 8. 5.
로지스틱 회귀(Logistic Regression) 로지스틱 회귀란? 로지스틱 회귀(logistic regression)는 이름은 회귀이지만 분류 모델입니다. 이 알고리즘은 선형 회귀와 동일하게 선형 방정식을 학습합니다. z = a * 무게 + b * 길이 + c * 대각선 + d *높이 + e * 두께 + f 시그모이드 함수 시그모이드 함수는 s자형 시그모이드 곡선을 갖는 수학 함수입니다. 일반적으로 단조 함수이며 1차 미분 그래프를 가지고 수평 점근선으로 수렴합니다. 우리가 원하는 것이 예측값이기 때문에 종속변수의 범위가 실수이지만 로지스틱 회귀 분석에서는 종속변수 y값이 0또는 1을 갖습니다. 그래서 우리는 주어진 데이터를 분류할 때 0인지 1인지 예측하는 모델을 만들어야합니다. 로지스틱 회귀로 이진 분류 수행하기 판다스를 임포트하여 데이터를 불러옵.. 2022. 8. 4.
반응형