분류 전체보기 67

[Deep Learning] 5. 배치, 미니배치, 수치 미분, 기울기

전 포스팅에서 신경망 학습과 손실 함수에 대해 알아봤습니다. 이번에는 미니배치, 수치 미분, 기울기에 대해 다뤄보겠습니다. 이 전의 포스팅과 같이 구현과 관련된 내용은 제 깃허브 링크를 참고해주시기 바랍니다. https://github.com/Kingnamji/BigAI/blob/main/%EB%B0%91%EC%8B%9C%EB%94%A51_re/04_NNTrain.ipynb 미니배치 신경망의 학습은 훈련데이터로부터 이뤄진다고 했습니다. 학습동안 훈련데이터에 대한 손실 함수의 값을 구하고, 그 값을 최대한 줄여주는 매개변수를 찾습니다. ( 이 내용은 https://kingnamji.tistory.com/18 에서 다뤘습니다. ) MNIST 데이터셋의 경우 훈련 데이터의 갯수가 60,000개 입니다. 이렇게..

[Deep Learning] 4.신경망 학습, 손실 함수(오차제곱합, 교차 엔트로피 오차)

신경망과 활성화 함수에 이어 이번에는 신경망 학습, 수치 미분, 손실 함수, 배치(미니 배치)에 대해 정리하겠습니다. 추후에 좀 더 깊게 볼 필요가 있다고 판단되는 내용은 따로 포스팅을 해보겠습니다. 구현과 함께 보고싶으시면 아래 제 깃허브 링크를 참고해주시기 바랍니다. https://github.com/Kingnamji/BigAI/blob/main/%EB%B0%91%EC%8B%9C%EB%94%A51_re/04_NNTrain.ipynb 학습 신경망에서 말하는 학습은 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 갱신(update)하는 것을 말합니다. 학습을 위한 지표로는 손실 함수(loss function)을 사용합니다. 손실 함수의 값을 작게 만드는 가중치 매개변수를 찾는 것이 학습의 목표입니다..

스칼라 미분, 벡터 미분, 행렬 미분

딥러닝 이론 공부 중 역전파의 수식을 보다가 스칼라, 벡터, 행렬에 대한 미분을 정리해놓는 게 좋을 것 같아서 기록합니다. 스칼라, 벡터, 행렬 스칼라는 크기만 있고 방향을 가지지 않는 양입니다. 상수나 변수 함수 모두 크기만 있고 방향을 가지지 않는다면 스칼라가 될 수 있습니다. 벡터는 스칼라와 대비되는 개념으로 크기와 방향을 가집니다. 열벡터 또는 행벡터를 아울러 의미합니다. 행렬(matrix)이란 실수 또는 복소수를 위 그림의 좌변과 같이 직사각형으로 배열한 것 입니다. 원소로 다항식이 들어가는 경우도 있습니다. CASE 스칼라, 벡터, 행렬 간 미분에서 따져볼 경우는 아래와 같습니다. 나머지 부분(행렬-벡터, 행렬-행렬)은 스칼라 - 벡터 또는 스칼라 - 행렬 간의 미분처럼 생각하면 구할 수 있겠..

[Deep Learning] 3. 출력층의 소프트맥스 함수(Softmax), 항등 함수

출력층 설계 신경망의 출력층(Output Layer)에서 사용하는 활성화 함수는 현재 해결해야하는 문제가 무엇인지에 따라 달라집니다. 문제는 크게 분류(classification)와 회귀(regression)으로 나뉩니다. 분류는 데이터가 어느 범주, 클래스에 속하는지를 맞춰야하는 문제(ex : 10대 or 20대 or 30대 이상)고, 회귀는 수치를 예측해야하는 문제(ex : 182.1cm)입니다. 항등 함수 항등 함수(identity function)은 입력 신호를 그대로 출력합니다. 소프트맥스 함수 분류에서 사용하는 소프트맥스 함수(softmax function)의 식을 한번 보겠습니다. $y_k = \frac{e^{a_k}}{\sum_{i=1}^{n}e^{a_i}}$ $e^{x}$ 는 지수 함수,..

[Deep Learning] 2. 신경망, 활성화 함수(시그모이드 Sigmoid, 렐루 Relu)

퍼셉트론에서는 가중치 값 (예시에서 $w1, w2, b$) 를 직접 설정했습니다. 반면에 신경망(인공 신경망이라고도 부름)에서는 가중치 매개변수의 적절한 값을 데이터로부터 '학습'해서 정합니다. 신경망 신경망의 구조는 아래와 같습니다. Input Layer - Hidden Layer - Output Layer ( 입력층 - 은닉층 - 출력층 ) 앞서 봤던 퍼셉트론의 구조와 비슷합니다. 퍼셉트론을 다시 수식으로 한번 표현해보겠습니다. $y = \begin{pmatrix}0\;(b + w1x1 + w2x2 \leq 0 )\\1\;(b + w1x1 + w2x2 > 0)\end{pmatrix}$ (b는 편향 w1, w2는 가중치) 이때 함수 $h$ 를 $h(x) = \begin{pmatrix}0\;(x \leq..

티스토리에 Latex 수식 사용하기

전에 티스토리에 글을 쓸 때 Latex 수식을 못 써서 불편했는데 찾아보니 역시 방법이 있어서 기록해놓습니다. 방법은 아래의 코드 두 줄을 MathJax.Hub.Config({ tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]} }); 블로그 관리에 들어가 왼쪽의 스킨 편집 -> html 편집 태그 내부에 붙여넣으면 됩니다. 아무 곳에나 붙여 넣어도 된다고 하네요. 저는 가장 아래쪽에 넣고 저장했습니다. 아래 처럼 일반적인 Latex 수식을 써보고 적용이 잘 되는지 확인하겠습니다. $y = x$ $y = x$ $\frac{f(x+h)-f(x-h)}{2h}$ $\frac{f(x+h)-f(x-h)}{2h}$

기타 2021.07.24

[Deep Learning] 1. 퍼셉트론, Perceptron

퍼셉트론 퍼셉트론(perceptron) 알고리즘은 신경망(딥러닝)의 기원이 되는 알고리즘입니다. 퍼셉트론은 다수의 신호를 입력받고 하나의 신호를 출력하는 구조입니다. (적어도 하나의 output을 출력합니다.) 퍼셉트론은 신호가 흐른다 또는 흐르지 않는다. (각각 1과 0)의 두가지 값을 가집니다. 그림은 입력으로 2개의 신호를 받는 퍼셉트론입니다. x1, x2는 입력 신호, w1, w2는 가중치 y는 출력 신호입니다. 원은 뉴런 혹은 노드라고 부릅니다. 신호가 다음 노드로 보내질 때는 각각 고유한 가중치가 곱해집니다. 위의 예시에서는 y = w1x1 + w2x2로 나타낼 수 있으며 신호의 총합이 정해진 임계값을 넘으면 1을 출력합니다. 이때 임계값은 theta 또는 T로 주로 표시합니다. 퍼셉트론의 동..

한국전자통신연구원(ETRI) 2021년 하계 인턴(연구연수생) 합격

안녕하세요! 최근에 블로그 글을 못쓰고 있습니다. 다름이 아니라 한국전자통신연구원(ETRI)에서 7~8월 간 인턴으로 일을 하게 되어 시간이 너무 부족합니다 ㅎㅎ (주말은 스터디에 참여 해야해서 따로 쉴 시간이 없어요..) 자세히는 말씀 못 드리지만 저는 에트리에서 데이터 관련 직무를 수행하고 있습니다. 사실 지원서를 제출하고 나서도 계속 떨어질 거라면서 비관했는데 붙었네요. 에트리 같은 곳에서 일하는 것을 늘 꿈꿨기 때문에 매일 출근이 즐겁습니다. 두 달간은 글은 많이 못 올리겠지만.. 열심히 배우고 다시 돌아오겠습니다. 화이팅!

Me 2021.07.15

[Pytorch] 파이토치로 GAN(Generative Adversarial Net) 구현하고 MNIST 손글씨 이미지 생성하기

yunjey/pytorch-tutorial PyTorch Tutorial for Deep Learning Researchers. Contribute to yunjey/pytorch-tutorial development by creating an account on GitHub. github.com 네이버 최윤제님의 자료를 통해 공부하고 기록한 글입니다. 파이토치를 통해 GAN을 구현하고, MNIST 데이터 셋을 이용해 실습했습니다. Google Colab 을 사용했습니다. 라이브러리 불러오기 및 하이퍼파라미터 설정 import torch import torch.nn as nn import torch.optim as optim import torchvision.utils as utils import tor..

[MySQL] INSERT, SELECT, UPDATE, DELETE 정리

전 포스팅에서 데이터베이스의 생성부터 테이블의 생성까지 다뤘습니다. 이번에는 데이터의 삽입(INSERT), 선택(SELECT), 수정(UPDATE), 삭제(DELETE)를 정리해보겠습니다. 데이터 삽입(INSERT) 테이블에 데이터를 삽입(추가) 하기 위해서는 INSERT INTO table_name (column name1, ... ,column nameN) VALUES('value1, ... , VALUE N); 형식을 사용합니다. 예시를 보겠습니다. 먼저, 테이블의 구조를 먼저 살피겠습니다. id, title, description, created, author, profile 이라는 column이 있고 각 데이터의 Type이 표시돼있습니다. INSERT INTO njh => njh라는 테이블에 데..