분류 전체보기

    [머신러닝/인공지능] 선형회귀_분류(Classification)

    분류(Classification) 이산적인 값 True False로 출력값을 내주는 Classification는 선형회귀의 한 타입이다. 시그모이드(Sigmoid)함수 Cross-entropy 연속값을 가지던 선형회귀의 손실함수와는 다른 (이산값을 가지는 선형회귀를 위한) 손실함수가 필요하다. 활성화 함수(Activation Function) Sigmoid와 같이 분류작업을 하는 함수에는 RelU, Tanh도 존재한다. 머신러닝에서 세 가지 모두 잘 쓰인다. 활성화함수는 비선형함수(non-linear function)으로 입력값에 대해 비선형적 대응(분류)를 한다. 그리고 임계값(threshold)(0.5,1값 등)을 기준으로 분류를 가능하게 한다. 분류(Classification) 예제 예제를 통해 분..

    [머신러닝/인공지능] 선형회귀 예제 _단일변수/다변수

    입력변수가 1개인 선형회귀 예제 앞서배운 회귀개념따라서 선형회귀를 구현하려면 y=Wx+b값을 구하고, 오차가 최소가 되는 W와 b를 구해야한다. 이를 실제로 구현할 때는 일반곱셈형식이 아니라 입력값x와 가중치W를 행렬로 변환후 y=W*x+b를 행렬곱으로 구한다. import numpy as np #트레이닝 데이터 준비.초기화 x_data=np.array([1,2,3,4,5]).reshape(5,1) y_data=np.array([2,3,4,5,6]).reshape(5,1) #임의의 W가중치, b바이어스 준비,초기화 W=np.random.rand(1,1) #0~1사이의 값으로 (1*1)행렬 생성 b=np.random.rand(1) #0~1사이의 값 #손실함수 LossFunction def loss_func..

    [머신러닝/인공지능] 수치미분(Numerical Derivative)

    수치미분(Numerical Derivative C언어나 파이썬같은 프로그래밍언어를 이용하여 미분값, 즉 입력 값이 아주 미세하게 변할 때 함수 f는 얼마나 변하는지 계산하는 것. 변수가 1개인 함수의 수치 미분 파이썬으로 구현한 코드 import numpy as np #미분공식 구현 def simple_derivative(f,var): #f는 외부에서 lamda등으로 정의한 함수, x는 미분을 알고자하는 입력값 delta=1e-5 #극한 구현 diff_val = ( f(var+delta) - f(var-delta) ) / (2*delta) #미분값 계산 return diff_val #미분 대상 함수 def func1(x): return x**2 ret_val=simple_derivative(func1,3..

    [머신러닝/인공지능]편미분(Partial Derivative)과 체인룰(Chain Rule)

    우리가 미분을 통해 얻을 수 있는 인사이트는 입력x를 현재값에서 아주 조금 변화시키면 f(x)는 얼마나 민감하게 반응하는지다. 편미분(Partial Derivative) 입력 변수가 2개 이상인 다변수 함수에서 미분하고자 하는 변수 1개를 제외한 나머지 변수들은 상수로 취급하고, 특정한 한 변수에 대해서만 미분하는 것. 편미분 활용: 체중(야식, 운동) 현재 먹는 야식의 양(현재변수)에서 조금 변화를 줄 경우 체중은 얼마나 변하는가? a체중 ------- a야식 현재 하고 있는 운동량에 조금 변화를 줄 경우 체중은 얼마나 변하는가? a체중 ------- a운동 체인룰(Chain Rule) 합성함수를 미분하기 위해 사용(합성함수란 여러 개의 함수로 구성된 함수) 합성함수를 미분할 때 분모와 분자에 동일한 ..

    [머신러닝/인공지능] 머신러닝 기초 개념_지도학습/비지도학습/선형회귀/손실함수/오차/가중치/바이어스

    지도학습(Supervised Learning) 타입1) 회귀(Regression) 타입2) 분류(Classification) 1. 정답을 포함하고 있는 트레이닝 데이터를 입력으로 2. 트레이닝 데이터를 이용하여 학습 3. 학습된 결과를 바탕으로 TestData와 같은 미지의 데이터가 주어졌을때 4.그 데이터의 미래값을 예측 비지도학습(Unsupervised Learning) 학습데이터에 정답은 없고 입력값만 있음. 주로 군집화 알고리즘 이용. 입력값의 분포와 특성을 파악해서 정답값의 범위를 알아내 그룹화 시킨다. 선형회귀(Linear Regression) 학습(Learning)_오차(error)/가중치(weight)/바이어스(bias) 손실함수(Loss Function 또는 Cost Function) 직..

    [딥러닝/머신러닝]논리게이트 XOR문제(XOR problem)

    Logistic Regression(미분)을 이용했을때 (추후에 Logistic Regression 게시글도 게시예정) XOR 게이트를 구현이 불가능하다. AND, OR, NAND게이트는 1개의 분류 시스템만으로도 구현가능하지만 XOR게이트는 여러개의 분류시스템을 조합해서 구현해야한다. 그래서 미분을 사용했던 머신러닝이 아닌 (머신러닝의 다른 한 분야인) 딥러닝을 이용한다. 딥러닝의 핵심 아이디어가 여러 분류 시스템을 조합하여 데이터 특성과 상관관계를 분석하는 것이다. 기본적으로 우리가 알고 있는 AND OR NAND XOR게이트의 정답 데이터는 AND: 0001 OR:0111 NAND:1110 XOR:0110 이다. 입력데이터는 각각 ([0,0],[0,1],[1,0],[1,1])이다. (입력 데이터는 ..

    [자료구조]그래프의 표현

    그래프를 표현하는 방법 인접 행렬 -정점들 사이의 인접관계를 행렬을 이용하여 표현하는 방법 그래프 G=(V,E):n개의 정점을 갖는 (|V(G)|=n>=1) 그래프 → 인접 행렬 A의 표현 A = (a ij ) : 2차원 n×n 배열. a ij = 1, if(vi, vj) E(G)에 포함 a ij = 0, if(vi, vj) E(G)에 미포함 -장점: 임의의 두 정점 사이에 간선이 있는지를 쉽게 결정할 수 있고, 정점의 차수(degree)를 쉽게 계산할 수 있다. -방향 그래프(diagraph)의 경우는 모든 행의 합이 진출차수가 되고, 모든 열의 합이 진입차수가 된다. -단점: 주어진 그래프 내에 간선의 수를 계산하거나 그래프가 연결그래프인지를 결정하는 등의 문제를 해결할 때는 많은 시간을 요구한다.(..

    [Java][객체지향] 인터페이스

    인터페이스 구현하기 public interface IntSequence{ boolean hasNext(); int next(); } public class SquareSequence implements IntSequence{ private int i; public boolean hasNext(){ return true; } public int next(){ i++; return i*i; } } IntSequence는 인터페이스이다. implements 키워드는 SquareSequence클래스가 IntSequence인터페이스를 따른다는 의미다. 구현하려는 클래스는 인터페이스의 메소드를 반드시 public으로 선언해야 한다. 인터페이스는 상속으로 확장이 가능하다. 인터페이스는 여러개로 구현할 수 있다.

    [Java][객체지향] 객체의 초기화

    객체 기본 초기화 생성자 안에서 인스턴스 변수를 명시적으로 설정하지 않으면 자동으로 기본값으로 설정된다. 숫자는 0, 불값은 false, 객체 참조는 null이 기본값이다. ex) name 변수를 명시적으로 설정하지 않았는데 getName()메소드를 호출하면 예상하지 못한 널 참조를 얻는다. 이럴 때 널 포인터 예외를 일으킨다. 인스턴스 변수 초기화 public class Employee{ private String name = ""; .... } 이 초기화는 객체 할당되고 생성자 실행 전에 이루어졌다. 따라서 모든 생성자는 같은 초깃값을 갖게 된다. 물론 생성자에서 초깃값을 덮어쓸 수도 있다. 이 방법 말고 클래스 선언부에 임의의 초기화 블록을 포함시키는 방법도 있다. public class Emplo..

    1의 보수, 2의 보수 덧셈과 뺄셈

    https://master-hun.tistory.com/48 1의보수 2의보수에 대한 정리 1의보수와 2의 보수 알고넘어가기 ▶ 보수란? - 보수(補數)는 보충을 해 주는 수를 의미합니다. - 예를들어서 1에 대한 10의 보수는 9 , 4에 대한 10의 보수는 6, 3에 대한 17의 보수는 14의 개념입니다. 2에대한.. master-hun.tistory.com https://blog.naver.com/dreamincalm/130081559335 1의 보수, 2의 보수 컴퓨터를 포함한 각종 논리회로에서 음수를 표현하는 방법은 다음 3가지가 있다. 부호 절대값 (Sign-Magn... blog.naver.com 음수 2진수와 10진수간의 변환 방법 http://cache798.blog.me/13000165..

    [C++자료구조]DFS(깊이우선탐색)와 BFS(너비우선탐색)

    DFS(Depth-first Search)깊이 우선 탐색은 출발 정점 v를 방문함으로써 시작된다. 다음으로 v에 인접하면서 아직 방문하지 않은 한 정점 w를 선택하여 이 w에서 다시 깊이-우선 탐색을 시작한다. 인접 정점들을 이미 모두 방문한 정점 u에 도달하면, 마지막으로 방문한 정점 중 아직 방문하지 않은 인접 정점 w를 가지고 있는 정점까지 되돌아가서 정점 w로부터 깊이-우선 탐색을 다시 시작한다. 이러한 탐색은 방문을 한 정점들로부터 방문하지 않은 정점으로 더 이상 갈 수 없을때 종료된다. 인접리스트 쓰는 경우 복잡도는 O(e)이다. e는 간선개수다. 인접행렬 쓰는 경우 인접한 모든 정점들을 결정하는 데 O(n)의 시간이 걸린다. 그러므로 최대 n개의 점을 방문해야하므로 복잡도는 O(n^2)이다...

    [C++] fill함수

    템플릿 함수 template void fill (ForwardIterator first, ForwardIterator last, const T& val); value(값)으로 범위를 Fill range 범위[first,last)안에 있는 모든 elements에 val(값)을 할당. 위의 템플릿함수는 아래와 같다: template void fill (ForwardIterator first, ForwardIterator last, const T& val) { while (first != last) { *first = val; ++first; } } 매개변수 -first, last 처음과 마지막의 iterator(커서/포인터)로 T데이터타입의 값할당을 elements의 순차적위치로 보여준다. 그래서 first..

    VCC와 GND

    VCC는 Votage Collector의 약자로 VC가 아닌 VCC로 'C'를 두번 쓴 이유는 VC가 다른 회로들 이름과 겹치기 때문에라고 합니다. GND는 그라운드, 접지, 어스 등으로 불리고 전압의 크기를 나타내기 위한 기준 전압이다. GND는 0V로 접속해주면 된다. 그래서 우리가 평소에 사용하는 110V나 220V는 이 기준전압인 GND보다 110V나 220V 높다는 뜻이다.

    'Call by reference' 그리고 'Call by value'

    아규먼트 전달 방식에 두 가지 방식이 있는데 이는 call-by-value와 call-by-reference다. 자바는 언제나 Call-by-value방식이다!(단, 자료형 따라 함수호출방식 달라짐 주의) Call-by-value(값에 의한 호출) 함수로 인자를 전달할 때 전달될 변수의 값을 복사하여 함수의 인자로 전달한다. 복사된 인자는 함수 안에서 지역적으로 사용되는 local value의 특성을 가진다. 그래서 함수 안에서 인자의 값이 변경되어도 외부의 변수의 값은 변경되지 않는다. 함수가 호출될때 메모리 공간엔 함수를 위한 별도의 임시 공간(heap)이 생성된다. 함수가 종료되면 해당 공간은 사라진다. 자바에서는 함수에 전달되는 인자의 데이터 타입에 따라서 함수호출방식이 달라진다. -Primiti..