Maximum Likelihood Estimation(최대 우도 추정, MLE) 의 이해 (구 블로그 글 복구)
·
Study/Data Science
- 세상에는 내포된 실제 확률과, 관측으로 얻어낸 확률이 존재합니다.동전 던지기의 확률은 얼마일까요?쉽게 앞/뒤 결과를 가진 공정한 사건이라 1/2라고 할수 있겠는데,이걸 어떻게 판단했나요? 결국 확률은, '전체에서 일어난 사건 개수 / 전체 사건 개수' 를 뜻합니다. 우리는 전체 사건의 개수를 파악하지 못할 가능성이 큽니다.너무 많거나, 조사에 비용이 너무 많이 드는 경우가 그러합니다. 이럴때 우리는 표본을 조사해서, 그 표본공간 안의 사건들로 확률을 유추합니다. 이렇게 표본의 확률을 사용하여 모수의 확률을 측정하려는 질문이 바로 MLE의 시작입니다.(정확히는, 관측된 표본을 가장 잘 설명하는 모수를 찾아내는 것.) - 확률 이해하기어떤 항아리가 존재한다고 가정합시다.우리는 이 내부를 모른다는 가정이지..
합성 함수 계산그래프와 연쇄법칙(chain rule) (구 블로그 글 복구)
·
Study/Data Science
- 이번 포스팅으론 딥러닝 모델 학습을 이해하기 위해 반드시 이해해야 하는 오차 역전파법을 이해하기 위한 선행 지식을 정리하겠습니다. [합성함수란?]함수의 실행 단계를 2개 이상으로 나눌수 있는 함수입니다.예를들면, z = (x+y)^2 이라는 함수는,먼저 x+y라는 계산을 먼저 하고,이후에 제곱을 해야합니다. 병렬적으로 동시에 처리할수 있는 것이 아니고, 순서를 지니죠. - 즉, 합성함수는, 한 함수의 결과값이 다른 함수의 입력값이 되어 사용되는 함수를 말합니다.위의 함수에서, t = x + y 라고 하고, z = t^2 으로 나누어 표현할수 있습니다. 즉, t 값이 먼저 있고, z값을 찾는 것입니다.[계산그래프란?]- 계산 그래프를 쉽게 이해하기 위해 예시를 하나 들어보겠습니다.이런 계산을 한번 해봅..
[정보 처리] 7. 자료구조 이론
·
Study/Computer Science
- 이번 포스팅은 알고리즘 개념과 자료구조 이론에 대해 정리합니다.자료구조의 실제 구현은 포함되어 있지 않습니다. [자료구조 개론](자료구조 개념)- 자료구조란, 데이터를 프로그램에서 효율적으로 활용할 수 있도록 논리적으로 설계된 데이터 구조 및 관계입니다.자료구조는 여러 종류가 있으며,개발자라면 데이터의 유형과 상황에 따라 적절한 자료구조를 선택하여 활용할 수 있는 능력이 필요합니다. - 자료 구조의 특징1. 같은 데이터를 활용하더라도 자료구조에 따라 성능에 큰 영향을 끼칠 수 있습니다.2. 효과적인 자료 구조란, 데이터 용량, 실행 시간 등을 최소한으로 사용하는 것입니다.3. 데이터 추가, 삭제, 탐색을 보다 효율적으로 수행할 수 있도록 하는 것이 목표입니다. - 자료 구조의 유형1. 단순 구조프로그..
음파 데이터 분석 기본과 딥러닝 소리 분류기 구현
·
Study/Data Science
- 이번 포스팅으론 소리 데이터를 분석하여 활용하는 기본 개념을 알아보고,간단한 소리 데이터 분류 문제를 해결하는 실습을 수행하겠습니다. 소리 데이터, 즉 음파의 파형을 분석할 때, 소리라는 데이터가 특별한 것이 아니라, 시각 데이터와 같이 그저 텐서로서 다룰수도 있다는 것을 알아보는 것이 목적입니다.- 먼저 소리라는 것과 컴퓨터에서 이 데이터의 성질과 형태에 대해 간단히 설명하겠습니다.(이전에 정리한 음파 데이터 정리글도 추천합니다.)소리는 모두들 아시다시피 공기를 매질로 하여 청각기관으로 수용할수 있는 부류의 데이터를 의미합니다.Hz(헤르츠, 초당 진동 수)에 따라 소리의 높낮이가 달라지며,dB(데시벨)에 따라 소리의 크기가 달라집니다. (10 dB당 실제값이 10배 증가하는 로그함수) 인간의 가청음..
음파 데이터 이론(Sampling Rate, Bit Depth) (구 블로그 글 복구)
·
Study/Data Science
- 이번 포스팅에서는 소리라는 현상을 데이터의 관점에서 어떻게 이해하는 지에 대해 알아보겠습니다. - 디지털 녹음 과정아날로그 데이터인 음파를, 음파 감지 센서(마이크)를 이용해서 받아들입니다.센서는 음파에서 오는 진동을 받아들여, 이를 전기적 신호로 전달합니다.일단 여기서 일차적인 데이터의 손실이 생겨날수 있습니다.마이크의 센서가 음파를 받아들이는 과정에서 발생하는 것이죠.물론 마이크 성능이 좋고, 무엇보다 사람이 귀로 들을수 있는 이상으로만 예민한 센서라면 인지적인 역할로서는 충분한 성능입니다. 어쨌건 이렇게 음파에 간섭을 받은 전기적 신호가 만들어질때만 해도 이것은 아직 아날로그 신호라 할수 있습니다.(공기를 매질로하던 신호가 전기 신호로 변환. 공기의 떨림이 전기의 떨림으로 전환.) 여기서 나온 ..
OpenCV, Dlib Python 얼굴인식기 제작
·
Study/Computer Vision
- 이번 포스팅으론 머리를 식히는 개념으로, 이제까지 배운 컴퓨터 비전 지식을 실제 서비스로 만들어보는 시간을 가지도록 하겠습니다.이전 글들은 전부 날아간 상태이므로, 추후 관련된 컴퓨터 비전 관련 지식들은 다시 정리할 것입니다. - 구현할 기능은, 영상 데이터를 받아서, 얼굴을 탐지하고, 해당 얼굴이 누구인지를 식별하도록 하는 것입니다.(동영상, 카메라의 실시간 분석도 가능) 식별된 구역을 바운딩박스로 묶어주고,탐지 결과를 출력 및 엑셀 파일로 저장을 해줍니다. (영상 인식 출입 통제의 가장 기본적인 기능) - 개발 시작0. 준비라이브러리 컴파일을 위해 비주얼 스튜디오 C++ 개발을 설치하시고,파이썬 최신버전(64bit여야 합니다.)에, 파이참 커뮤니티 버전을 설치하시면 됩니다. cmake도 설치해둡시..
텐서의 차원(shape) 읽는 법과 축(axis) 쉽게 이해하기 (구 블로그 글 복구)
·
Study/Data Science
- 텐서(tensor)란,수학과 물리, 그리고 딥러닝(머신러닝)에서 자주 쓰이는 개념인데, 간단하게 말하면 다차원 배열입니다. 1 이나 2, 3 과 같은 단일 수치값은 스칼라(Scalar) 라고 부르며, [0,1,2]이런 1D-array가 벡터(vector), [[1,2,3],[4,5,6]]이런 2D-array가 행렬(matrix)이라는 이름으로 불립니다. 이러한 것들은 텐서라 부르며, 쉽게 말해 '스칼라의 묶음'입니다. 즉, 스칼라는 0차 텐서,벡터는 1차 텐서, 행렬은 2차 텐서, 3차원 배열은 3차 텐서, 그 위로 4차 텐서, 5차 텐서... 이렇게 되는 것입니다. - 이번 포스팅으로는 이러한 텐서의 차원과 축을 이해하는 방식을 정리하려 합니다.이로인해 딥러닝 혹은 다차원 데이터 분석시 유용하게 사..
KL Divergence 정리
·
Study/Data Science
- 사전지식으로 필요한 정보이론 기초와, cross entropy에 대한 것은,링크를 참고하세요. - 정답 확률분포와 예측 확률분포에 대해 먼저 이야기해 봅시다.정답 확률분포 p는, 말 그대로 정답입니다.딥러닝의 분류문제로 보자면,[1,0,0,0]과 같은 정답 레이블로,레이블이 [강아지, 고양이, 거북이, 새]일 확률을 나타낸 것이라면,위 레이블은 '강아지' 100퍼센트 라는 것이죠. 이것의 엔트로피는 0입니다.계산할 것도 없이, 이미 가장 큰 확률이 강아지인데다가, 다른 것으로 판단될 여지가 없죠. 그러면 예측 확률분포 q는, 딥러닝 모델이 출력한 확률값으로 합시다.모델이 학습은 해서 대충 알기는 한데,데이터로 판단했을 때, 뭔가 애매한 부분도 존재해서,[0.8, 0.1, 0.06, 0.04] 이렇게 ..
딥러닝 손실함수 Cross Entropy Error 정리 (구 블로그 글 복구)
·
Study/Data Science
- MSE 와 CEE는 대표적인 딥러닝 손실함수입니다. (분류문제, 즉 범주형 데이터 예측 문제에는 CEE를 사용하는 것이 좋고, 회귀문제인 수치형 데이터 예측문제에는 MSE를 사용하는게 좋다고들 하죠.)딥러닝 손실함수는 무엇일까요?너무 기초적인 내용이니, 자세한 내용은 딥러닝 알고리즘 기초 정리글들을 확인하시고, 요약하자면,'예측값이 정답값에 얼마나 멀리 떨어져있는가'에 대한 것을 알아내는 함수입니다. 이 함수의 값이 결국 머신러닝 학습의 기준이 되고,이 손실함수 값이 최소가 되는 방향으로, 내부 수식들의 파라미터를 갱신하는 것이 학습입니다.즉, 손실함수라고 칭해진다면, '예측값이 정답값과 동일하면 작은 값을, 예측값이 정답값과 다를수록 큰 값을 출력하는 함수'라는 것이고, 각 손실함수별 종류가 나눠진..
[정보 처리] 6. 공학적 응용 소프트웨어 설계 방식
·
Study/Computer Science
[소프트웨어 설계]- 소프트웨어의 설계란,요구사항의 분석 단계에서 도출된 요구 기능이 소프트웨어에서 실현될 수 있도록 알고리즘을 설계하고,그 알고리즘에 의해 사용, 처리될 자료 구조를 문서화 하는 작업입니다. - 대표적인 소프트웨어 설계 방식은 아래와 같습니다.1. 절차 지향 설계(Process Oriented Design)작업이 수행되는 순서인 작업 절차를 중심으로 소프트웨어를 설계합니다.컴퓨터의 처리 구조와 유사하고, 특히나 절차지향 프로그래밍 언어(C 언어 등)에 유리하며, 그만큼 성능이 좋은 경우가 많습니다.하지만 아래의 객체 지향 설계에 비해서 유지보수가 어렵단 단점이 있습니다. 2. 객체 지향 설계(Object Oriented Design)프로그램을 구성하는 요소를 객체라는 단위로 묶어서 설계..