이 글은 제가 공부한 내용을 정리하는 글입니다. 잘못된 내용이 있을 수 있으며, 잘못된 내용을 찾으셨다면 리플로 알려주시길 부탁드립니다. 감사합니다. Numerical Optimization, 즉 수치최적화를 공부하고 그 내용을 정리하고자 합니다. Secant method 가 잘 설명되어 있는 영상입니다. 알고리즘 자체의 방법론과 Rate of convergence 에 대한 설명은 영상에 충분히 시각화되어 추가적인 설명이 필요 없다고 생각됩니다. 여기선 Secant method 의 장점과 단점을 생각해보려합니다. 장점 1. 미분이 필요 없습니다. 따라서 미분이 불가능한 함수에 적용할 수 있습니다.2. Rate of convergence 가 더 높기 때문에 Bisection 에 비해 일반적으로 더 빠르게 ..
이 글은 제가 공부한 내용을 정리하는 글입니다. 잘못된 내용이 있을 수 있으며, 잘못된 내용을 찾으셨다면 리플로 알려주시길 부탁드립니다. 감사합니다. Numerical Optimization, 즉 수치최적화를 공부하고 그 내용을 정리하고자 합니다. Newton's method 가 잘 설명되어 있는 영상입니다. 알고리즘 자체의 방법론과 Rate of convergence(이하 수렴률) 에 대한 설명은 영상에 충분히 시각화되어 추가적인 설명이 필요 없다고 생각됩니다. 여기서는 Newton's method 의 장점과 단점을 생각해보려 합니다. 장점 1. 이전 글에서 다뤘던 Bisection method 보다 (일반적으로) 수렴률이 높기 때문에, (일반적으로) 탐색속도가 더 빠릅니다.(모든 경우에 그런 것은 아..
이 글은 제가 공부한 내용을 정리하는 글입니다. 잘못된 내용이 있을 수 있으며, 잘못된 내용을 찾으셨다면 리플로 알려주시길 부탁드립니다. 감사합니다. Numerical Optimization, 즉 수치최적화를 공부하고 그 내용을 정리하고자 합니다. Bisection method 가 잘 설명되어 있는 영상입니다. 알고리즘 자체의 방법론과 Rate of convergence 에 대한 설명은 영상에 충분히 시각화되어 추가적인 설명이 필요 없다고 생각됩니다. 여기선 Bisection method 의 장점과 단점을 생각해보려합니다. 장점 초기 두 지점 a, b 만 서로 부호가 다르게 설정된다면 반드시 해를 찾을 수 있는 방법입니다. 단점 1. 초기 두 지점 a, b 의 부호가 서로 같다면 알고리즘 적용이 불가능합..
이 글은 제가 공부한 내용을 정리하는 글입니다. 잘못된 내용이 있을 수 있으며, 잘못된 내용을 찾으셨다면 리플로 알려주시길 부탁드립니다. 감사합니다. Numerical Optimization, 즉 수치최적화를 공부하고 그 내용을 정리하고자 합니다. Unimodal function 에 대한 이해를 해야 앞으로 정리할 Optimization algorithm(최적화 알고리즘) 을 이해할 수 있습니다. 위키백과의 히스토그램 항목에서 Uninodal 이 한국어로 무슨 뜻인지 찾아볼 수 있었습니다. 위키백과에 따르면 Unimodal 은 단봉 혹은 단봉형이라는 단어로 번역할 수 있습니다. 그렇다면 Unimodal function 은 단봉함수 혹은 단봉형함수로 번역 될 것입니다.(히스토그램 위키 백과 링크) 그래프를..
이 글은 제가 공부한 내용을 정리하는 글입니다. 잘못된 내용이 있을 수 있으며, 잘못된 내용을 찾으셨다면 리플로 알려주시길 부탁드립니다. 감사합니다. Numerical Optimization, 즉 수치최적화를 공부하고 그 내용을 정리하고자 합니다. Univariate function 의 최적화 조건의 일반화에 대한 증명을 잘 정리해 놓은 글을 찾았습니다. 이 증명은 Higher-order derivative test 의 증명 방법 중 하나로 이해됩니다. 원문의 증명 과정중 간단하게 생략하거나 말로만 설명한 부분들의 수식을 보충해서 번역했습니다. 원문은 가장 아래에 링크를 적었습니다. 티스토리 수식입력 기능이 한글을 지원하지 않아 번역임에도 수식을 영어와 혼용해서 쓰겠습니다. 증명하고자 하는 명제는 다음과..
이 글은 제가 공부한 내용을 정리하는 글입니다. 잘못된 내용이 있을 수 있으며, 잘못된 내용을 찾으셨다면 리플로 알려주시길 부탁드립니다. 감사합니다. Numerical Optimization, 즉 수치최적화를 공부하고 그 내용을 정리하고자 합니다. 출처: https://light-tree.tistory.com/156 [All about]이 글은 제가 공부한 내용을 정리하는 글입니다. 잘못된 내용이 있을 수 있으며, 잘못된 내용을 찾으셨다면 리플로 알려주시길 부탁드립니다. 감사합니다. Numerical Optimization, 즉 수치최적화를 공부하고 그 내용을 정리하고자 합니다. 출처: https://light-tree.tistory.com/156 [All about]이 글은 제가 공부한 내용을 정리하는..
이 글은 제가 공부한 내용을 정리하는 글입니다. 잘못된 내용이 있을 수 있으며, 잘못된 내용을 찾으셨다면 리플로 알려주시길 부탁드립니다. 감사합니다. Numerical Optimization, 즉 수치최적화를 공부하고 그 내용을 정리하고자 합니다. Taylor series expansion Unconstrained univariate optimization 에 대해서 정리하기 위해선 먼저 Taylor series(테일러 급수), Taylor series expansion(테일러 급수 전개) 를 알아야 합니다. 여기선 이를 간략하게 정리하고 넘어가겠습니다. 테일러 급수의 증명과 같은 더 자세한 내용은 따로 검색해주시길 부탁드립니다. 테일러 급수는 함수를 급수 형태로 근사(혹은 표현)하는 것입니다. 매끄러운..
이 글은 제가 공부한 내용을 정리하는 글입니다. 잘못된 내용이 있을 수 있으며, 잘못된 내용을 찾으셨다면 리플로 알려주시길 부탁드립니다. 감사합니다. Numerical Optimization, 즉 수치최적화를 공부하고 그 내용을 정리하고자 합니다. 출처: https://light-tree.tistory.com/154 [All about]이 글은 제가 공부한 내용을 정리하는 글입니다. 잘못된 내용이 있을 수 있으며, 잘못된 내용을 찾으셨다면 리플로 알려주시길 부탁드립니다. 감사합니다. Numerical Optimization, 즉 수치최적화를 공부하고 그 내용을 정리하고자 합니다. 출처: https://light-tree.tistory.com/154 [All about]이 글은 제가 공부한 내용을 정리하는..
이 글은 제가 공부한 내용을 정리하는 글입니다. 잘못된 내용이 있을 수 있으며, 잘못된 내용을 찾으셨다면 리플로 알려주시길 부탁드립니다. 감사합니다. Numerical Optimization, 즉 수치최적화를 공부하고 그 내용을 정리하고자 합니다. Modeling Process 먼저 문제를 정의하는 것부터 생각해야 합니다. 예를 들어 석유 공급망을 설계하는 문제를 해결하고자 한다면 1) Define the optimization problem and model parameters 석유 공급망 해결 문제의 목표는 무엇인가? → 목표가 공급망 설계의 비용을 최소화하는 것인지, 설계된 공급망의 공급 속도를 최대화 하고 싶은지, 공급중 발생하는 비용을 최소화 하고 싶은 것인지 혹은 언급된 목표들을 복합적으로 달..
opencv 를 python 에서 사용하다보면 import 과정에서 에러가 나는 경우가 많습니다. opencv-contrib 이 설치되지 않아서 에러가 난다던지... opencv-contrib error 를 처음 봤을때 아주 짜증나고 당황했던 기억이 있네요. 1. opencv 는 정상적으로 import 되지만 몇몇 내장함수를 사용할 수 없는 경우 우분투에 아나콘다를 사용해서 opencv 를 사용하는 경우 파이썬에서 import cv2 코드를 사용하여 import 는 정상적으로 되는데, 막상 opencv 내장함수를 사용하면 에러가 나는 경우가 있습니다. 에러코드를 읽어보면 "If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config" 라고 해..
제가 공부한 내용을 정리하는 글입니다. 잘못된 내용이 있다면 지적 부탁드립니다. 감사합니다. 일반적인 pooling 은 한 채널 안에서만 이루어지지만, Cross-Channel Pooling 은 이름 그대로 pooling 을 채널을 넘어 하겠다는 것입니다. 위 그림처럼 3개의 채널에 첫번째 값이 각각 1,7,5 일 경우 Cross Channel Pooling 을 Max 조건으로 하게 되면 오른쪽 같이 가장 큰 값 한개만 취하게 되는 것입니다. Cross Channel Pooling 을 하면 feature map 의 크기는 변하지 않고, 채널 수만 줄이는 dimension reduction 의 효과를 볼 수 있습니다. 이 외에도 Dimension reduction 을 위해서 사용할 수 있는 방법은 Poin..
제가 공부한 내용을 정리하는 글입니다. 제가 보려고 쓰는 글이기 때문에 아래는 작성의 편의상 반말로 작성했습니다. RMSProp 이전 AdaGrad 설명에서 언급했듯이 AdaGrad 는 최소값에 도달하기 전에 학습률을 0에 수렴하게 만들 수도 있다. AdaGrad 가 간단한 convex function 에선 잘 동작하지만, 복잡한 다차원 곡면 함수를 (상대적으로)잘 탐색하도록 설계되지 않기도 했고. 기울기의 단순한 누적만으로는 충분하지 않은 셈이다. RMSProp 은 기울기를 단순 누적하지 않고 지수 가중 이동 평균 Exponentially weighted moving average 를 사용하여 최신 기울기들이 더 크게 반영되도록 하였다. 이전 AdaGrad 의 h 에 새로운 hyper parameter..
제가 공부한 내용을 정리하는 글입니다. 제가 나중에 다시 보기 위해 작성하는 것이므로 본문은 편의상 반말로 작성했습니다. 잘못된 내용이 있다면 지적 부탁드립니다. 감사합니다. Momentum Momentum 은 Gradient descent(이하 GD) 기반의 optimization algorithm 이다. 수식으로 표현하면 아래와 같다. L : loss function value W : weights η : learning rate α : 가속도 같은 역할을 하는 hyper parameter, 0.9 등 1 이하의 값을 취함. 자세한 것은 아래에 설명. v 는 일종의 가속도(혹은 속도) 같은 개념으로 생각하는 것이 이해에 더 도움이 될 것 같다. v 의 영향으로 인해 가중치가 감소하던 (혹은 증가하던)..
제가 공부한 내용을 정리하는 글입니다. 작성의 편의를 위해 아래는 반말로 작성하였습니다. 잘못된 내용이 있다면 지적 부탁드립니다. 감사합니다. Batch Normalization 배치 정규화의 목적 Batch normalization 을 설명하기 전에 Nomalization 이 무엇인지 먼저 이해해야 한다. Normalization 에 대한 설명은 아래 링크로 대체한다. Normalization 설명 글 링크 위 글에선 입력 데이터를 왜 정규화해야 하는지 설명했다. 딥러닝 모델의 구조를 단순화하여 설명하면 흔히들 입력층 → 은닉층 → 출력층으로 묘사한다. 입력층의 입력 데이터는 쉽게 normalization 할 수 있지만, 입력층을 지나서 만나게 되는 layer 들의 입력은 normalization 하기..
제가 공부한 내용을 정리한 글입니다. 제가 나중에 다시 볼려고 작성한 글이다보니 편의상 반말로 작성했습니다. 잘못된 내용이 있다면 지적 부탁드립니다. 감사합니다. MGD(Mini-batch gradient descent), SGD(stochastic gradient descent)의 차이에 대해 설명하기 위해선 먼저 배치 Batch 가 무엇인지 알아야 한다. 배치 Batch 배치의 사전적 의미는 (일괄적으로 처리되는)집단이다. 배치는 한번에 여러개의 데이터를 묶어서 입력하는 것인데, GPU 의 병렬 연산 기능을 최대한 효율적으로 사용하기 위해 쓰는 방법이다.(GPU 의 병렬연산에 대한 설명 링크) 배치는 Iteration 1회당 사용되는 training data set 의 묶음이며, Iteration 은..
이 글은 제가 공부한 내용을 하나씩 정리하는 글입니다. 주로 제 기준에서 기초적인, 제가 까먹지 않을 만한 부분은 자세하게 쓰지 않습니다. 이러한 부분은 틈틈이 내용을 추가할 예정입니다. 예를들어 이 글의 현재 버전에서는 최소제곱법의 계산 방법등은 기술하지 않았습니다. 내용 중 잘못된 부분이 있다면 지적해주시길 부탁드립니다. 감사합니다. 기계학습 문제는 Classification(분류) 와 Regression(회귀) 로 나뉩니다. Classification(분류) Classification 은 이전 글인 딥러닝 용어 정리에 나름 잘 정리되어 있다고 생각합니다. Image classification 을 예로 들어 간단히 한줄로 요약하면 Image 안에 존재하는 객체 Object 의 종류를 구분하는 것입니다..
제가 공부한 내용을 정리한 글입니다. 제가 나중에 다시 볼려고 작성한 글이다보니 편의상 반말로 작성했습니다. 잘못된 내용이 있다면 지적 부탁드립니다. 감사합니다. Normalization Data Normalization 은 데이터의 범위를 사용자가 원하는 범위로 제한하는 것이다. 이미지 데이터의 경우 픽셀 정보를 0~255 사이의 값으로 가지는데, 이를 255로 나누어주면 0~1.0 사이의 값을 가지게 될 것이다. 위의 예를 수식으로 간단하게 쓴다면, (정규화하고자 하는 값 - 데이터 값들 중 최소값) / (데이터 값들 중 최대값 - 데이터 값들 중 최소값) 이다. 다른 방법으로는 (정규화하고자 하는 값 - 데이터의 평균) / 데이터의 표준편차 가 있다. 두번째 경우는 Standardization 이라..
제가 공부한 내용을 정리한 글입니다. 제가 나중에 다시 볼려고 작성한 글이다보니 편의상 반말로 작성했습니다. 잘못된 내용이 있다면 지적 부탁드립니다. 감사합니다. Validation Cross Validation 을 이해하려면 먼저 Validation 을 이해해야 합니다. Model 을 학습시킨 뒤 평가할 때 Test 와 Validation 이라는 2가지의 Phase 가 있습니다. Test 는 Unseen data 가 입력되었을 때, 학습결과와 유사한 결과가 나오는지 확인하는 과정입니다. Generalization(일반화) 성능을 평가한다고 할 수 있죠. Model 이 Overfitting(과적합) 되었는지 확인한다고 할 수 있습니다. Validation 은 Model 의 Hyper parameter(사..
제가 공부하고 정리한 것을 나중에 다시 보기 위해 적는 글입니다. 제가 잘못 설명한 내용이 있다면 알려주시길 부탁드립니다. 사용된 이미지들의 출처는 본문에 링크로 나와 있거나 글의 가장 마지막에 쓰여 있습니다. 감사합니다. L1 Regularization 과 L2 Regularization 을 설명하기 위한 글입니다. 결론부터 얘기하자면 L1 Regularization 과 L2 Regularization 모두 Overfitting(과적합) 을 막기 위해 사용됩니다. 위 두 개념을 이해하기 위해 필요한 개념들부터 먼저 설명합니다. 이 글의 순서는 아래와 같습니다. 1. Norm 2. L1 Norm 3. L2 Norm 4. L1 Norm 과 L2 Norm 의 차이 5. L1 Loss 6. L2 Loss 7...
제가 공부한 내용을 정리한 글입니다. 제가 나중에 다시 볼려고 작성한 글이다보니 편의상 반말로 작성했습니다. 잘못된 내용이 있다면 지적 부탁드립니다. 감사합니다. 원본 이미지 위에 Bounding box 를 추가하여 아래 설명에 대한 이해를 돕고자 한다[1]. Recall Recall 은 인식/탐지 기술의 분야에서 학술적으로 검출율을 의미한다. 맨 위의 이미지로 예를 들자면, 이미지 안에는 총 6마리의 동물이 존재하지만, 객체(object) 로서 검출(detected) 된 것은 3마리 뿐이다. 직관적으로 recall 은 검출율(detection rate) 라고 이해할 수도 있다. 즉 recall 은 객체들을 얼마나 빠뜨리지 않고 잘 찾아내는가에 대한 평가 지표이다. recall = tp / (tp + f..
1. jupyter 에서도 같은 파일만 아니면 한명 이상의 유저가 서버에 접근해서 작업을 실행할 수 있습니다. 2. 제 OS환경은 우분투 16.04 버전입니다. 윈도우도 방화벽 해제랑 jupyter_notebook_config.py 파일 경로처럼 경로설정하는 부분만 센스있게 고쳐쓰시면 관리자모드 powershell 창을 열어서 똑같이 하시면 됩니다. 다른 기타 환경은 영향을 미칠 것 같지 않네요. 3. 직접 타이핑할만한 부분은 이렇게 배경색을 넣었습니다. 복사해서 쓰셔도 되지만, username 같은 부분은 본인의 사용환경에 맞게 센스있게 고쳐서 써주세요. 0. 우분투에서 포트 방화벽 해제하기 터미널에 $ sudo ufw allow 8888 주피터 서버 접속을 위해 사용할 포트를 방화벽 해제해주세요. 예..
# 이 글에 사용법이 나오는 메소드 및 인자 # sep, end, ljust(), center(), rjust() # print 문 공백 조절하기 # print 문은 입력된 값이 여러개라면 공백을 이용해서 값들을 구분하여 표현해줍니다. print("hello", "world") # 실행결과 hello world # print 문 안에 sep 인자를 이용해서 입력된 값 사이의 공백을 다룰 수 있습니다. print("hello", "world", sep="&") # 실행결과 hello&world print("I", "don't", "wanna", "study", sep="7") # 실행결과 I7don't7wanna7study # 줄바꿈 없이(엔터 없이) 여러개의 print 문 출력하기, 줄바꾸기 없이 여러개..
# 문자열 검색하기 # find()는 해당 문자열의 왼쪽에서부터 탐색을 시작해서 괄호안의 문자열이 처음 등장하는 부분의 인덱스를 반환합니다. my_str = "Hello World" print(my_str.find("H")) # 실행결과 0 print(my_str.find("W")) # 실행결과 6 print(my_str.find("l")) # 실행결과 2 print(my_str.find("Z")) # 실행결과 -1 # find("Z") 처럼 해당 문자열에 "Z" 가 존재하지 않을 경우 -1 을 반환합니다. # rfind() 는 find() 와 비슷하지만 오른쪽에서부터 탐색을 시작합니다. print(my_str.rfind('l')) # 실행결과 9 # 문자열 대문자로 변환하기 # upper() 는 입력값..
# round(n, r) 의 값은 숫자 n의 소수점 r 번째 자리에서 반올림 연산을 실행합니다. a = 2 b = 3 print(round(a/b, 3)) # 실행결과 0.667 # round() 함수는 좀 더 가까운 짝수값으로 올림연산을 합니다. # 아래의 경우 반올림 연산이 실행되는 숫자가 둘다 '5' 인데도 윗 코드는 내림 연산을, 아랫코드는 올림연산을 하는 것을 볼 수 있습니다. print(round(2.5)) # 실행결과 2 print(round(3.5)) # 실행결과 4 # 두번째 인자에 음수를 사용할 수 도 있습니다. 음수를 사용하면 가장 높은 자리수의 다음 숫자를 반올림합니다. print(round(11, -1)) # 실행결과 10 print(round(165, -1)) # 실행결과 160..
리스트(list)는 '다른 변수들을 넣을 수 있는 변수' 입니다. 여러개의 변수를 다룰 때 일일이 저장하는 번거로움을 피할 수 있습니다. a = 0 b = 1 c = 2 list1 = [0,1,2] list2 = [a,b,c] 이처럼 3개의 변수를 일일이 지정하지 않고 한번에 한줄로 표현할 수도 있으며, 미리 지정된 변수를 리스트에 입력할 수도 있습니다. print(list1[0]) print(list1[1]) print(list1[2]) print(list1[3]) 위 명령어를 실행하게 되면 IndexError: list index out of range 라는 에러메세지가 출력됩니다. 이는 호출한 리스트의 인덱스가 초과되었다는 에러메세지입니다.리스트는 인덱스가 0부터 시작하기 때문에 첫번째 값이 lis..
이 글은 제가 공부하다 정리할 필요를 느껴서 작성하는 글입니다. 잘못된 내용이 있다면 지적 부탁드립니다. 오류 메시지SyntaxError: EOL while scanning string literal 원인따옴표 ', " 의 짝이 맞지 않을 때 위 실행코드의 경우 print('hello world') 가 아닌 print('hello world) 로 따옴표 ' 가 한개 모자랍니다. 오류 메시지IndentationError: expected an indented block 원인if 문 다음줄에 들여쓰기(indentation)가 있어야 하는데, 들여쓰기가 모자랍니다. 오류 메시지IndentationError: unindent does not match any outer indentation level 원인첫번째..
제가 공부하면서 햇갈리는 것들을 정리하고자 글을 씁니다. 잘못된 내용이 있다면 지적 부탁드립니다.컴프리헨션이 무엇인지는 이전 글인 리스트 컴프리헨션 에 설명되어 있습니다. 딕셔너리 컴프리헨션은 딕셔너리의 key 와 value 를 모두 선언해줘야 합니다. alphabets = ['a','b','c','d','e'] for my_index, my_element in enumerate(alphabets): print('index is {} and element is {}'.format(my_index, my_element)) new_alphabets = { new_index : new_element for new_index, new_element in enumerate(alphabets)} #위 코드는 아래 ..
제가 공부하면서 햇갈리는 것들이나 용어를 정리해놓고 사전처럼 쓰려고 작성하는 글입니다. 혹시 잘못 기록한 내용이 있다면 지적 부탁드립니다. 리스트 컴프리헨션 list comprehension, 직역하면 리스트 조건제시법입니다. 리스트를 선언할 때 원소를 더 쉽게 지정하기 위한 방법입니다.아래 예시 코드와 함께 주석을 작성했습니다. areas = [] areas1 = [] areas2 = [] for i in range(1, 11): # i*i 대신 i**2 를 사용해도 됩니다. areas = areas + [i*i] areas1.append(i*i) areas2.extend([i*i]) print('areas', areas) print('areas1', areas1) print('areas2', area..
매번 메소드 오버로딩과 메소드 오버라이딩을 햇갈려서 제 나름대로 정리해서 적습니다. 혹시 틀린 부분이 있다면 지적해주시길 부탁드립니다. 설명은 파이썬으로 되어 있지만, 메소드 오버라이딩 개념 자체는 모든 언어에 동일한 것으로 알고 있습니다. 파이썬은 타언어보다 작성 및 가독이 더 쉬운 편이니 타언어 사용자도 이 글로 내용 이해를 하시는데 지장 없을거라 생각합니다. 메소드 오버라이딩은 상위 클래스 안에 선언된 메소드(함수)를 하위 클래스에서 새로 선언 혹은 정의(덮어쓰는, 오버라이드)하는 것을 말합니다. 아래에 Animal 클래스 안에 선언된 greet 메소드를 Human 클래스와 Dog 클래스에서 오버라이딩하는 예시 코드와 주석을 작성했습니다. '개'와 '사람'은 둘 다 '동물' 입니다. 그래서 동물 클..
공부를 하다 보면 용어의 정의에 대해서 정확히 알아야 할 필요가, 그리고 정리해두어야 할 필요를 느끼게 됩니다. 잘 정리해서 저장하고 저와 같은 필요를 느낄 분들의 불편함도 줄이고자 블로그에 정리합니다. 아래 사용되는 이미지들은 포스트 최하단에 출처를 표시하였고, 용어들은 필자가 알고 있던 내용들을 바탕으로 작성하였습니다. 혹시 오류가 있다면 리플로 알려주시기 바랍니다.모든 용어는 처음 사용시 한글과 영어를 혼용하여 읽는 이를 돕고, 이후 재사용시 한쪽 언어만 사용하였습니다. 다만 한글로 번역을 모르는 경우는 영어로만 표기하였습니다. 이하는 작성의 편의상 반말로 썼습니다. Classification, Localization, Object Detection, Semantic segmentation[1] C..