본문 바로가기

분류 전체보기

(594)
지도에서 DFS, BFS DFS 지도에서 DFS는 한 가지 방법으로 갈 때까지 가보는 방식이라고 생각한다. - 백트랙킹 방식이라 생각하고 visit 표시를 해줘야 한다. 중복 방지를 위해서 체크하는 방법은 자주 활용되므로 잘 익혀둘 수 있도록 한다. 그리고 만약 n 의 크기가 10,000이상의 값이라면 어떻게 해결해야할지 고민해보기 바란다. 이 방법들은 모두 시간이 너무 많이 걸리기 때문에  값이 커질 경우 제한된 시간 이내에 해를 구할 수 없다. BFS BFS는 한 칸에 대한 데이터가 중요하고 그것을 저장하는 것이다. 최단거리 문제
[ML] Sigmoid, ReLu
[ML] Gradient Descent3 Gradient descent : 에러를 미분하여 weight를 업데이트 하는 방법. Back-propagation : Hidden node에서 에러를 미분하여 weight를 업데이트 하는 방법. Feedforward 그럼 본격적으로 input을 네트워크에 입력하여 출력을 얻는 과정을 살펴보겠습니다. input은 벡터로, weight는 행렬이므로 node의 출력은 행렬곱에 의해 구해집니다. 이렇게 구해진 node의 출력은 Activation 함수에 들어갑니다. 1-07. Multi Layer Perceptron 총정리 이제 1단원을 마무리하며 최종 정리 및 요약을 해보겠습니다. 이 포스트에 MLP(Multi Layer Perceptrons)의 내용을 모두 담았습니다. MLP를 훈련하기 위해서는 다음과 같..
[PyTorch] Intro, 외울 부분 모델을 학습시키기 전에, 어떤 loss를 쓸 것인지 learning rate은 몇으로 할 것인지 optimizer는 무엇으로 할 것인지 학습 횟수는 몇 번으로 할 것인지 PyTorch로 딥러닝하기 — Intro 거창하게 “딥러닝하기”라는 제목을 달았지만, 알다시피 우리에게 딥러닝을 한다는 것은 딥러닝 framework를 잘 사용하기와 같은 의미입니다. medium.com 파이토치로 시작하는 딥러닝 기초 부스트코스 무료 강의 www.boostcourse.org
[ML] Softmax regression, Categorical Cross-Entropy Loss, Multi-class Classification 앞서 로지스틱 회귀를 통해 2개의 선택지 중에서 1개를 고르는 이진 분류(Binary Classification)를 풀어봤습니다. 이번 챕터에서는 3개 이상의 선택지 중에서 1개를 고르는 다중 클래스 분류 문제를 위한 소프트맥스 회귀(Softmax Regression)에 대해서 배웁니다. 다중 클래스 분류(Multi-class Classification) 이진 분류가 두 개의 선택지 중 하나를 고르는 문제였다면, 세 개 이상의 선택지 중 하나를 고르는 문제를 다중 클래스 분류라고 합니다. 아래의 문제는 꽃받침 길이, 꽃받침 넓이, 꽃잎 길이, 꽃잎 넓이로부터 setosa, versicolor, virginica라는 3개의 품종 중 어떤 품종인지를 예측하는 문제로 전형적인 다중 클래스 분류 문제입니다. 위..
[ML] Epoch, iteration, batch size 머신 러닝 - epoch, batch size, iteration의 의미 - 출처 이번 포스팅의 주제는 텐서플로우나 케라스 등을 사용해서 모델을 만들어 보았으면 다들 아실 용어... blog.naver.com
[PyTorch] Dataset and DataLoader 사용법 Mini-batch 적용하기 위해 사용
[PyTorch] Multivariable Linear Regression 1. 데이터 정의 2. w 초기화 3. optimzer 정의 4. H 계산 5. Cost 계산(MSE) 6. Gradient Descent 파이토치로 시작하는 딥러닝 기초 부스트코스 무료 강의 www.boostcourse.org
[PyTorch] Linear Regression 작성하기
[PyTorch] Tensor와 NumPy 텐서 조작(Tensor Manipulation)에 대해 알아본다. 핵심키워드 텐서(Tensor) 넘파이(NumPy) 텐서 조작(Tensor Manipulation) 1. Tensor는 배열의 집합이다. 2. 차원의 수는 Rank와 같은말이다. 3. 배열의 차원에따라 불리는 이름이 달라진다. PyTorch Tensor torch.tensor로 tensor를 만들어낸후 torch.** 의 함수로 각종 계산을 할 수 있다. TORCH.TENSOR.ADD Tensor.add(other, *, alpha=1) → Tensor Add a scalar or tensor to self tensor. If both alpha and other are specified, each element of other is sca..
[PyTorch] package 1. Package load먼저, 필요한 패키지들을 로드합니다. 각각의 패키지들의 대략적인 사용목적은 다음과 같습니다. torch: PyTorch 패키지를 불러옵니다. torchvision: PyTorch 에서 이미지 데이터 로드와 관련된 여러가지 편리한 함수들을 제공합니다. matplotlib.pyplot: 데이터 시각화를 위해 사용합니다. numpy: Scientific computing과 관련된 여러 편리한 기능들을 제공해주는 라이브러리입니다
[Docker] 도커 파일 복사 (로컬 <-> 컨테이너) 1. 컨테이너 안에 있는 파일을 로컬로 복사 “tmp-container”라는 컨테이너 내부에 “/root/data/test.md” 라는 파일이 있다고 하자. 이 파일을 로컬(호스트)의 “~/data/” 위치로 가져오려면 다음과 같이 하면 된다. $ docker cp tmp_container:/root/data/test.md ~/data/ cp 명령어 뒤에 컨테이너 이름과 컨테이너 내부 데이터 경로를 “:” 로 구분해 적어준다. 그 뒤에는 데이터를 복사해올 로컬 경로를 적어주면 된다. 2. 로컬의 파일을 컨테이너 안으로 복사 이번엔 로컬의 “~/data/test.md” 라는 파일을 컨테이너의 “/root/data/”로 복사해보자. 그냥 명령 인자의 순서를 반대로 해주면 된다. $ docker cp ~/da..
[Docker] Docker User Guide 도커를 start -> attach로 키면 도커 서버 환경이 나온다. sh를 실행하면 jupyter가 켜진다. 로컬의 파일을 옮기려면 로컬에서 cp를 작성해야 한다. 1. 도커 이미지 받아오기 docker run -it -v [압축푼 폴더 경로 입력]:/workspace contest:latest /bin/bash 컨테이너 실행하기 도커를 실행하는 명령어는 다음과 같습니다. docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...] 다음은 자주 사용하는 옵션들입니다. 옵션설명 -d detached mode 흔히 말하는 백그라운드 모드 -p 호스트와 컨테이너의 포트를 연결 (포워딩) -v 호스트와 컨테이너의 디렉토리를 연결 (마운트) -e 컨테이너 내에서 사..
[BOJ] 1535 안녕 #include #define MAXL 20 #define MAXJ 100 using namespace std; int DP[MAXL+1][MAXJ+1], L[MAXL+1], J[MAXJ+1]; int N; void input() { cin >> N ; for (int i = 1; i > L[i]; for (int i = 1; i > J[i]; } void solve() { for (int i = 1; i = L[i]) DP[i][j] = max(DP[i - 1][j - L[i]] + J[i], DP[i - 1][j]); else DP[i][j] = DP[i - 1][j]; } } int res = 0; for (int i = 1; i < 100; i++) res = max(DP[N][i], res); ..
완전탐색 - 2단계 문제집: 완전 탐색 (normal) (soo7652) www.acmicpc.net 1051 숫자 정사각형 37.506% 1057 토너먼트 55.774% 1198 삼각형으로 자르기 51.807% 1487 물건 팔기 29.775% 1639 행운의 티켓 50.498% 1895 필터 81.250% 2548 대표 자연수 49.509% 2615 오목 21.368% 2992 크면서 작은 수 47.778% 3024 마라톤 틱택토 32.280% 3182 한동이는 공부가 하기 싫어! 71.429% 4375 1 36.962% 9873 Cow Baseball 64.894% 9996 한국이 그리울 땐 서버에 접속하지 27.958% 10211 Maximum Subarray 42.152% 10974 모든 순열 60.007% 115..
[ML] Transfer learning1 한 명의 개발자가 있습니다. 이 개발자는 개, 고양이, 말, 소, 양을 구별할 수 있는 이미지 분류용 CNN 모델을 만들어야합니다. 보스가 시켰으니까요. 그래서 이 개발자는 수많은 개, 고양이, 말, 소, 양의 이미지를 인터넷상에서 많이 찾아왔습니다. 이 이미지들을 가지고 CNN 모델을 훈련시켰습니다. 수많은 테스트를 통해 최적의 모델 가중치(weights)를 찾아냈습니다. 즉, CNN 모델 내의 많은 가중치들이 개, 고양이, 말, 소, 양을 분류하기에 적합하도록 조정이 된 것이죠. 그런데 갑자기 보스가 개, 고양이, 말, 소, 양은 분류할 필요가 없어졌다고 합니다. 그것 대신 사슴, 코끼리, 토끼, 염소, 호랑이를 분류할 수 있는 모델을 만들어달라고 합니다. 최대한 빨리! 이 개발자는 너무나 짜증이 났..
[ML] pre-training , fine-tuning, Bottleneck feature Pre Training 이란? 선행학습(pre-training) 사전훈련(pre-training) 전처리과정(pre-training) 이라고도 하는데, 이는 Multi Layered Perceptron (MLP)에서 Weight와 Bias를 잘 초기화 시키는 방법이다. 이러한 Pre-training을 통해서 효과적으로 layer를 쌓아서 여러개의 hidden layer도 효율적으로 훈련 할 수 있다. 또한, 이는 unsupervised learning이 가능하기 때문에(물론 이러한 가중치와 편향 초기화가 끝나면 레이블 된 데이터로 supervised learning 해야 한다 -> fine tuning) 레이블 되지 않은 큰 데이터를 넣어 훈련 시킬 수 있다는 점을 장점으로 들 수 있다. 또한 Drop-..
완전탐색 - 1단계 문제집: 완전 탐색 (easy) (soo7652) www.acmicpc.net 4690 완전 세제곱 40.853% 9094 수학적 호기심 69.964% 20410 추첨상 사수 대작전! (Easy) 68.148% 1813 마지막 한마디 36.826% 2231 분해합 47.515% 2309 일곱 난쟁이 43.555% 2386 도비의 영어 공부 60.497% 2798 블랙잭 44.414% 2858 기숙사 바닥 55.560% 2966 찍기 50.483% 3040 백설 공주와 일곱 난쟁이 70.973% 10448 유레카 이론 59.016% 13410 거꾸로 구구단 59.473% 14697 방 배정하기 43.745% 19532 수학은 비대면강의입니다 47.391% 1145 적어도 대부분의 배수 58.621% 216..
Deque 덱은 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료 구조의 한 형태이다. 두 개의 포인터를 사용하여, 양쪽에서 삭제와 삽입을 발생 시킬 수 있다. 큐와 스택을 합친 형태로 생각할 수 있다.
[BOJ] 1261 알고스팟 DFS에서 백트랙킹하는 부분을 잘 생각해야 되는데 매번 고려하지 않아서 생각이상의 시간이 걸린다. 4방향을 모두 확인하면서 간다면 한 방향을 확인하고 그 방향으로는 더 이상 가면 안된다. 따라서 4방향을 모두 확인한 후에 false로 바꿔줘야 한다. row, col으로 하는게 안헷갈린다. x,y로 했다가 완전히 뒤죽 박죽이 되어있었다. 시간 초과가 뜨는 풀이이긴 하지만 DFS백트랙킹 잘 알아둬야 겠다. #include #define MAX 100 using namespace std; int N, M, next_col, next_row, res = INT32_MAX; string MAP[MAX]; bool visit[MAX][MAX]; int d_row[4] = {-1, 0, 1, 0}; int d_col..
[OD] R-CNN 2-stage Detector [Object Detection] 2. R-CNN : 딥러닝을 이용한 첫 2-stage Detector 저번 포스팅에서는 Object Detection의 전체적인 흐름에 대해서 알아보았습니다. [Object Detection] 1. Object Detection 논문 흐름 및 리뷰 Deep Learning 을 이용한 Object Detection의 최신 논문 동향의 흐름.. nuggy875.tistory.com ⊙ R-CNN (CVPR 2014) Rich feature hierarchies for accurate object detection and semantic segmentation 2012년 ILSVRC(ImageNet Large Scale Visual Recogni..
[OD] Object Detection 흐름 1-Stage Detector VS 2-stage Detector 그림4. 1-Stage Detector vs 2-stage Detector 논문 흐름 Deep Learning을 이용한 Object Detection은 크게 1-stage Detector와 2-stage Detector로 나눌 수 있습니다. 가운데 수평 화살표를 기준으로 위 쪽 논문들이 2-stage Detector 논문들이고, 아래 쪽 논문들이 1-stage Detector 논문들입니다. 분홍색 네모로 표시한 논문들을 중심으로 논문리뷰를 진행하면서 Object Detection의 논문 흐름을 알아볼 예정입니다. Object Detection문제는 앞에 말했듯이 물체의 위치를 찾는 Localization 문제와, 물체를 식별하는 Class..
[ML] Objective Function, Loss Function, Cost Function의 차이 학습을 통해 최적화시키려는 함수이다. 딥러닝에서는 일반적으로 학습을 통해 Cost를 최소화시키는 optimize작업을 수행을 하고 이때 Cost function을 Objective function이라 볼 수 있다. 하지만 Objective function에 꼭 Cost function만 있는 것은 아니다. 예로 MLE와 같이 학습을 통해 확률을 최대화하려는 function 역시 Objective function으로 정의되지만 이는 Cost, Loss function은 아니다. input(x)에 대한 예측값(y^)과 실제 label값(y) 사이의 오차를 계산하는 함수이다. 예로 linear regression의 경우 Loss function으로 최소제곱오차를 사용한다. 최소제곱오차 즉, 하나의 input ..
[ML] Gradient Descent2 - Optimizer 가장 기본이 되는 optimizer 알고리즘으로 경사를 따라 내려가면서 W를 update시킨다. Gradient descent notation GD를 사용하는 이유 왜 이렇게 기울기를 사용하여 step별로 update를 시키는것일까? 애초에 cost(W)식을 미분하여 0인 점을 찾으면 되는게 아닌가?? -> 내가 알고 있기로 두 가지 이유 때문에 closed form으로 해결하지 못한다고 알고 있다. 1. 대부분의 non-linear regression문제는 closed form solution이 존재하지 않다. 2. closed form solution이 존재해도 수많은 parameter가 있을때는 GD로 해결하는 것이 계산적으로도 더 효율적이다. full-batch가 아닌 mini batch로 학습을..
[ML] Perceptron3 - Multi Layer Perceptron XOR의 문제를 극복하지 못한 퍼셉트론은 다층 퍼셉트론(Multi Layer Perceptron)이 나타나면서 새로운 국면에 진입하게 된다. 다층 퍼셉트론이란 퍼셉트론을 여러개를 합친 것을 의미한다. 기존의 퍼셉트론은 위와 같은 input layer와 output layer의 2개로만 이루어진, 구조를 보여왔다. 이러한 구조는 XOR의 난제를 해결하지 못하지만, 퍼셉트론을 겹치면 얘기가 달라진다. 아래는 진리표로 XOR을 극복하는 것을 보여준다. XOR 진리표는 X1값과 X2값이 동일해야지, Y값이 1이 나오는 진리표라는 것을 잘 알고 있다. 그럼 위의 값을 AND로 합치면 어떻게 될까?? 우선, 위의 값을 좀 더 알기 쉽게 다시 표로 정리를 하자면 아래와 같이 볼 수 있다. X1과 X2를 NAND와 O..
[ML] Perceptron2 - 논리회로 1. 퍼셉트론을 이해하는, 논리회로 초창기 퍼셉트론은 단순한 분류 문제를 풀 수 있었습니다. 이걸 이해하기 위해서는 진리표를 확인해야 될 필요가 있습니다. 인간의 논리방식을 컴퓨터로 구현할 수 있다면 인공지능을 구현해 낼 수 있을 것이다. 라는 것이 당시의 생각이었고, 실제로 로센블래트는 분류하는 문제를 시연까지 할 정도로 사람들에게서 꿈과 같은 기술을 보여주게 되었습니다. 그 분류를 보여주는 것이 "진리표대로 작동하냐"인데 위 그림처럼 어떠한 값(input)이 2개 없다고 가정을 할 때 컴퓨터가 논리적으로 인식하는 방식이 다음과 같은 게이트로 구현하는 것입니다. 2. AND 게이트 AND는 모두 True 일 경우에 작동을 한다입니다. 한쪽이라도 False일 경우 작동을 멈추는데 퍼셉트론은 1일 경우 T..
[ML] Perceptron1 - 시작 1. 인공신경망과 딥러닝의 시작 "인공신경망(Neural Network)과 딥러닝(Deep Learning)은 퍼셉트론이 처음이다!"라고 말할 수 있을 것입니다. 많은 사람들이 "인공지능 = 신경망"이라고 생각하는 분들이 많은데 그 만큼 인간이 예측하기 힘든 부분을 신경망이 보여주기 때문에 인공지능이란 컴퓨터가 하는 행위(또는 생각)를 인간이 알아차리지 못하는 것으로 해석하는 분들이 많습니다. 2. 퍼셉트론(Perceptron) 동작 설명 퍼셉트론의 동작은 노드(뇌로 따지면 뉴런)의 가중치와 입력치를 곱한 것을 모두 합한 값이 임계치보다 크면 활성화되고, 1을 출력하며, 활성화되지 않으면 결과값으로 0을 출력하는 것입니다. 이를 그림으로 표현하면 아래와 같습니다. 갑자기 어려워지나요? 활성화라는 말과 노..
[ML] Loss Function 딥러닝 혹은 머신러닝은 컴퓨터가 가중치를 찾아가는 과정이다. 일단 아래 예를 보도록 해보자. 4 = 2a + b 6 = 3a + b 이와 같은 문제가 있다고 가정을 해보자, 사람들에게 a와 b에 들어가야 되는 답은 무엇인가? 라고 물어본다면 값을 대입해서 문제를 풀어본다던지 직관적으로 풀어본다던지 아니면 여러가지 공식을 써서 풀어본다던지 할 것이다. 2번과 3번과 같은 경우 컴퓨터에게 시키기에는 매우 힘든 작업이다. 반대로 값이 엄청 많을 경우 1번은 인간에게 힘들 수 있다. 물론 위의 문제는 너무 쉽기 때문에 값을 대충 대입해서도 충분히 맞출 것이다. 컴퓨터는 기본적으로 첫번째 방법인 값을 대입해서 문제를 풀어본다. 그래서 대입한 결과와 실제 정답간의 간격 즉, 차이를 최대한 줄이는 방향으로 값을 대입..
[ML] Gradient Descent1 gradient descent 방법의 직관적 의미 gradient descent 방법은 steepest descent 방법이라고도 불리는데, 함수 값이 낮아지는 방향으로 독립 변수 값을 변형시켜가면서 최종적으로는 최소 함수 값을 갖도록 하는 독립 변수 값을 찾는 방법이다. steepest descent 방법은 다음과 같이 많이 비유되기도 한다. 앞이 보이지 않는 안개가 낀 산을 내려올 때는 모든 방향으로 산을 더듬어가며 산의 높이가 가장 낮아지는 방향으로 한 발씩 내딛어갈 수 있다. gradient descent의 목적과 사용 이유 gradient descent는 함수의 최소값을 찾는 문제에서 활용된다. 함수의 최소, 최댓값을 찾으려면 “미분계수가 0인 지점을 찾으면 되지 않느냐?”라고 물을 수 있는데,..
[ML] Activation1 - 종류 및 설명 앞서 Neural Network에 대해서 배워보았습니다. 다시 Neural Network를 살펴볼까요? 아래그림중에 f라고 표시된 activation function이 담당하고 있는 역할이 뭘까요? 본래 뉴런은 여러 경로를 통해 들어온 전기신호의 합이 일정치 이상이 되면 다음 뉴런으로 신호를 전달하게 됩니다. 앞서 언급한 "일정치 이상이 되는 기준"이 Activation function이 되는 것입니다. 예를 들어, 일정 값 이상이 되면 1을 출력하여 다음 뉴런에 값을 전달해 주고, 일정 값 이하가 되면 0을 출력하여 다음 뉴런에 값을 전달해주지 않게 합니다. 사실 굳이 출력 값을 activation function을 통해 0 or 1 값으로 범위를 한정하는 것이 얼마나 큰 의미를 갖고 있는지는 모르겠습..