zenn.skin 무료버전 배포중!
자세히보기

전체 글 182

DataScience
[ML] 정확도가 아닌 손실 함수를 사용해 학습하는 이유

모델의 성능을 평가할 때는 정확도를 사용하는데 정작 모델을 학습시키며 파라미터값을 수정할 때는 정확도를 사용하지 않고 손실함수를 사용합니다. 모델의 최적의 파라미터값을 최적화할 때, 매개변수의 미분을 계산하고, 계산한 미분 값을 이용해 다시 파라미터값을 조금씩 수정하며 계산하게 됩니다. 매개변수에 대한 손실함수의 미분은 "가중치 매개변수를 아주 조금 변화시켰을 때, 손실함수가 얼마나 변하는지"를 나타냅니다. 미분값이 음수라면 가중치를 양의 방향으로 변화시켜 손실함수의 값을 줄이고, 미분값이 양수라면 가중치를 음의 방향으로 변화시켜 손실함수의 값을 줄입니다. 미분값이 0이라면 매개변수의 갱신을 멈추고 모델의 학습이 끝나게 됩니다. 1. 정확도를 학습에 대한 지표로 사용하면 대부분의 지점에서 미분값이 0이 ..

카테고리 없음
[ML] 퍼셉트론과 신경망 차이 (difference between perceptron and neural network)

1. 신경망(Neural Network) 퍼셉트론을 사용하면 복잡한 함수도 표현할 수 있습니다. 하지만 앞서 구현한 Gate들처럼 가중치를 직접 설정해주어야 한다는 단점이 있습니다. 하지만 신경망은 데이터들로부터 가중치를 자동으로 학습하여 직접 가중치를 설정하지 않아도 적절한 매개변수값을 구할 수 있습니다. 신경망은 기본적으로 입력층(Input layer), 출력층(Output layer) 그리고 은닉층(Hidden layer)으로 구성됩니다. 입력층과 출력층은 외부에서 볼 수 있지만 은닉층은 외부에서 볼 수 없습니다. 위 그림은 가중치를 갖는 노드들이 2개이기 때문에 "2층 신경망"이라고 하는데 표기에 따라 3층 신경망이라고 하는 경우도 있습니다. 2. 활성화 함수(Activation function)..

Legacy
[C++] xcode에서 bits/stdc++.h

stdc++.h는 자주 사용되는 라이브러리리들을 컴파일하도록 도와주어 하나씩 추가해야 하는 번거로움을 줄여줍니다. stdc++.h 안에 있는 라이브러리들을 단순히 모두 컴파일해주는 작업이므로, 불필요한 라이브러리들까지 추가된다는 단점이 있습니다. stdc++.h는 표준 라이브러리가 아니기 때문에 파일을 직접 추가해주어야 합니다. Linux GCC 4.8.0 /bits/stdc++.h header definition with error fixed. Linux GCC 4.8.0 /bits/stdc++.h header definition with error fixed. - stdc++.h gist.github.com 위 링크에서 stdc++.h에 대해 확인할 수 있습니다. $ cd /Applications/X..

DataScience
[ML] 다층 퍼셉트론(multi-layer perceptron)

퍼셉트론은 하나의 선형 결정경계를 갖습니다. 그렇기 때문에 XOR과 같이 비선형 결정 경계를 갖는 문제는 풀 수 없는 한계점이 있었습니다. 하지만 두 개 이상의 퍼셉트론을 사용하면 이러한 비선형 결정 경계를 갖는 문제도 풀 수 있게 됩니다. 위와 같이 두 개의 선형 결정 경계를 사용하면 XOR문제를 깔끔하게 해결할 수 있습니다. 실제로 XOR문제는 AND, NAND, OR Gate를 사용해서 풀 수 있습니다. A B Q 0 0 0 1 0 1 0 1 1 1 1 0 앞서 구현한 AND, NAND, OR Gate 함수를 호출해도 동일한 결과를 구할 수 있습니다. def XOR(x1, x2): s1 = NAND(x1, x2) s2 = OR(x1, x2) return AND(s1, s2) 이렇게 XOR은 두 개 ..

DataScience
[ML] 퍼셉트론 (Perceptron)

1. 퍼셉트론(Perceptron) 퍼셉트론은 신경망의 기원이 되는 알고리즘입니다. 퍼셉트론의 구조를 배워야 신경망과 딥러닝의 아이디어를 이해할 수 있습니다. 퍼셉트론은 다수의 신호를 입력 받아 하나의 신호를 출력하는 역할을 합니다. 이 때 퍼셉트론은 0 또는 1의 출력을 가질 수 있습니다. 위 그림에서 x1, x2, y는 뉴런(노드)라고 부르며, x1과 x2는 입력 신호, y는 출력 신호가 됩니다. 입력 신호가 다음 뉴런에 보내질 때는 일정한 가중치가 곱해집니다. 출력 신호는 입력 신호에 들어온 신호의 합이 일정한 값(역치, 임계값)을 넘는 경우에만 1을 출력합니다. 2. 퍼셉트론을 이용한 논리 회로의 표현 이 퍼셉트론을 사용하면 AND, OR, NAND와 같은 논리 게이트를 표현할 수 있습니다. 출력..

CS/Network
[Network] IP(Internet Protocol)

1. IP(Internet Protocol) IP는 Network Layer에서 송신자와 수신자가 패킷을 교환하기 위해 사용하는 프로토콜입니다. IP는 패킷(데이터그램)을 여러 개의 덩어리로 나누어 전송하게 됩니다. IP는 패킷의 형식을 정의하고 주소 시스템을 사용하는 프로토콜입니다. IP는 다음과 같은 특징을 갖습니다. IP는 비신뢰성(unreliability)이다 비신뢰성은 전송 흐름에 관여하지 않기 때문에 보낸 정보가 제대로 갔는지 보장하지 못하는 것을 의미합니다. 패킷은 손상되거나 loss될 수 있고 순서가 바뀌거나 중복으로 전달될 수도 있습니다. 패킷 전송과 순서를 보장하기 위해서는 상위 Layer에서 TCP와 같은 프로토콜들을 이용해야 합니다. IP는 비연결성(connectionlessness..

Math/Linear Algebra
행렬 곱셈의 해석

행렬을 여러 개의 원소로 이루어져 있는데 다음과 같이 1) 열에 대한 벡터들 또는 2) 행에 대한 벡터들로 이루어져 있다고 생각할 수 있습니다. 결과는 모두 동일하지만 어떤 식으로 보냐에 따라 해석을 다르게 해석할 수 있기 때문에 오늘은 각각의 곱셈 결과에 대해 해석해보려 합니다. 1) 내적과 외적 표현 ① 내적 내적 연산의 결과는 스칼라가 됩니다. ② 외적 외적 연산의 결과는 행렬이 됩니다. 2) 행렬과 벡터 곱에 대한 표현 ① 행벡터에 대한 곱셈 ② 열벡터에 대한 곱셈 열벡터에 대한 합으로 나타내면 선형결합으로 해석할 수 있습니다. 각각에 열벡터값을 가중치라 생각하면 벡터 x에 대해 가중치를 곱하는 연산으로도 해석할 수 있습니다. 머신러닝 알고리즘이나 퍼셉트론 등을 해석할 때는 열벡터에 대한 곱셈으로..

CS/Network
[Network] Client-Server 모델와 P2P(Peer-to-Peer) 모델

1. Client-Server model client는 네트워크를 통해 서버에 접속하여 데이터나 서비스를 제공받는 역할을 합니다. 보통 end host라 하며 일반 사용자가 client에 해당합니다. 엄밀히 말하면 서버에게 정보를 요청하는 응용 프로그램이나 서비스를 의미합니다. server는 서비스를 제공하는 컴퓨터를 의미하며 Http 서버, Database 서버, 웹 서버, DNS 서버 등 client에게 데이터나 서비스 등을 제공하는 역할을 합니다. client-server model은 정보 공유에 초점을 두고, 데이터 관리가 서버에 의해 이루어집니다. 클라이언트는 서버에게 정보를 요청할 수 있고, 서버는 이에 응답해주는 방식으로 동작합니다. 여러 클라이언트가 동시에 서버에 접속하면 서버에 부하가 늘..

Math/ODE
[미분방정식] 미정계수법 - 비제차 선형미분방정식(method of undetermined coefficients - non-homogeneous linear differential equation)

1. 미정계수법 미정계수법은 비제차 선형 상미분방정식을 푸는 방법 중 하나입니다. 비제차 선형 상미분방정식은 위와 같은 형태를 같습니다. 제차 미분방정식과 다르게 비제차 미분방정식은 제차 미분방정식의 해와 특수해를 일반해로 갖습니다. 미정 계수법은 r(x)를 보고 적당한 특수해의 형태를 결정하여, 주어진 미분방정식에 직접 값을 대입하여 미정계수를 구하는 방법입니다. 미정계수법을 사용할 때 다음과 같은 규칙을 적용해 미정계수를 구할 수 있습니다. 2. 예제