728x90

Programming 8

[머신러닝] 활성화 함수의 종류

활성화 함수(Activation Function)의 종류 활성화 함수(Activation Function)란 입력 데이터(input data)의 가중치 합을 출력 신호(Output signal)로 변환하는 함수이다. 대표적인 활성화 함수는 ReLU, 시그모이드(Sigmoid)함수 등이 있다. 1. 시그모이드 함수(Sigmoid Function) S자형 곡선 또는 시그모이드 곡선을 갖는 함수이며, 계단함수(Step Function)의 단점을 보안해 준다. (계단 함수는 출력값이 0 또는 1의 값만 반환하고, 사이 값은 무시한다.) def logit(a): return 1 / ( 1 + np.exp(-a)) a = np.linspace(-5, 5, 200) plt.plot([-5, 5], [0, 0], 'k..

[머신러닝] 인공 신경망(ANN, Artificial Neural Network)

인공신경망(ANN, Artificial Neural Network) 인공신경망이란, 뇌에 있는 생물학적 뉴런(Neuron)의 네트워크에서 영감을 받은 머신러닝 모델이다. 인공신경망은 크게 2가지의 분류로 구별되며 아키텍쳐와 학습방법에 따라서 분류가 가능하다. 1. 아키텍쳐 기반에 따른 분류 퍼셉트론(Perceptron) : 가장 간단한 인공 신경망 구조 단층 퍼셉트론(Single-Layer Perceptron) 아래 그림과 같이 입력계층(Input-Layer)과 출력계층(Output-Layer)로만 이루어진 단순한 구조를 가진다. 다층 퍼셉트론(Multi-Layer Perceptron) 아래 그림과 같이 입력계층과 출력계층 사이에 은닉층(Hidden-Layer)가 있는 구조를 가진다. 은닉층이 2개 이상..

[머신러닝] 강화학습의 분류

강화학습(Reinforcement Learning) 학습하는 시스템을 에이전트(Agent)라 부르며 환경(Environment)을 관찰(Observation)해서 행동(Action)을 실행하고 그 결과로 보상을 받는다. 시간이 지나면서 가장 최적의 보상을 얻기위해 정책(Policy)이라 부르는 최상의 전략을 스스로 학습을 진행한다. 1. 배치 학습 & 온라인 학습 입력 데이터의 스트림으로부터 점진적으로 학습할 수 있는지에 따른 분류 배치 학습(Batch Learning) 시스템을 점진적으로 학습할 수 없고, 가용 데이터를 모두 사용하여 훈련 시간과 자원을 많이 소모하므로 보통 오프라인에서 수행 새로운 데이터에 대한 학습이 필요할 경우 전체 데이터를 사용하여 시스템의 새로운 버전을 처음부터 다시 훈련 많은..

[머신러닝] 강화학습

강화학습(Reinforcement Learning)? 인공지능의 방법론인 머신러닝(Machine Learning)의 한 종류 머신러닝은 크게 지도학습, 비지도학습, 강화학습으로 분류할 수 있다. 1. 지도학습(Supervised Learning) 데이터와 각 데이터의 레이블(lable)이 주어진 상태에서 새로운 데이터에 레이블을 매기는 방법을 학습 하는 것 Ex) A 지역의 아파트의 가격은 a원이고, B 지역의 주택의 가격은 b원 이라는 정보를 모델에게 알려준 다음 이 정보를 토대로 C 지역의 아파트의 가격은 c원일 것이다. 라고 예측하는 방식 (회귀 방식) 2. 비지도학습(Unsupervised Learning) 레이블 없이 데이터만 주어진 상태에서 데이터를 분류하거나 밀도를 추정하는 방법을 학습 하는..

[Python] Lambda(람다) 사용법

Lambda(람다) 사용법 Lambda(람다) 함수는 프로그래밍 언어에서 사용되는 개념으로 익명 함수를 지칭하는 용어이다. 함수를 따로 호출하지 않고 사용하는 방식으로 람다함수를 이용하면 코드도 간결해지고 효율적인 퍼포먼스를 기대할 수 있다. 그러나 람다 함수를 너무 남용하면 코드 이해도가 떨어지고, 방식에 따라서 오히려 속도가 느려질 수도 있다. 1. 사용법 lambda {인자} : {표현 식} 2. Example 우선 0에서 9까지 출력을 해보자 먼저 lambda식을 사용하지 않은 코드는 아래처럼 for문으로 작성할 수 있다. for number in range(10): print(number) lambda식을 사용하면 아래 코드와 같이 한줄로 작성할 수 있다. map(lambda x: x, rang..

Programming/Python 2021.12.24

[python] Anaconda에서 MNIST 실습하기

MNIST 데이터는 0 ~ 9 까지 손글씨로 이루어진 이미지 데이터 셋이다. MNIST Yann LeCun 웹사이트에서 제공해주고 설치가 가능하다. 1. MNIST Dataset 설치 MNIST in CSV (pjreddie.com) MNIST in CSV MNIST in CSV Here's the train set and test set. The format is: label, pix-11, pix-12, pix-13, ... where pix-ij is the pixel in the ith row and jth column. For the curious, this is the script to generate the csv files from the original data. def convert(i..

Programming/Python 2021.12.21

[Linux] 데이터 전처리 시 유의 사항 (개행문자 제거)

데이터 전처리 시 유의사항 음성인식 또는 음성합성에 사용되는 데이터를 전처리 하는 과정에 있어서 windows에서 작업한 파일을 Linux에서 열 경우 간혹 개행문자 (^M) 가 입력되어 있을 때가 있다. Linux에서 개행문자 (^M)는 ctrl + v + M 로 입력하면 된다. 아래 예시와 같이 되어있을때 여러가지 방법으로 수정이 가능하다. $ cat -v test.txt test number1 ^M test number2 ^M test number3 ^M 1. VI 편집기에서 수정 # 한줄만 변경 :%s/^M// # 모든 줄 변경 :%s/^M//g 2. sed 명령어로 수정 sed -i 's/^M//g' test.txt 3. awk 명령어로 수정 # test1.txt 파일로 저장 awk 'sub(^..

Programming 2021.12.16

[C++] Thread(쓰레드)

Thread(쓰레드) 프로세스(Process) 실행의 단위로 정의할 수 있다. 하나의 프로세스는 1개이상의 Thread로 구성되어있고, Thread는 프로세스의 메모리와 자원을 서로 공유한다. 그리고, 각각의 Thread 마다 registers와 stack을 소유하고 있다. 그림으로 표현하면 아래처럼 표현이 가능하다. 1. Thread 사용의 장점 자원의 효율성 증대 처리 비용 감소 프로그램 응답시간 단축(간단한 통신방법) 프로세스 내에서 메모리 영역을 공유하고, 힙영역을 공유하고 있으므로 데이터를 주고받기 편하고, 통신 비용이 적다. 2. Thread 사용의 문제점 자원을 서로 공유하고 있어서 병목현상 또는 데드락 등 동기화 문제가 발생할 수 있다. 설계가 어렵고 디버깅이 힘들다. 하나의 스레드에 문제..

Programming/C++ 2021.12.07
728x90