본문 바로가기

분류 전체보기184

알고리즘 2장 - 정렬 문제 : 선택 정렬 - 알고리즘 2장- 정렬 문제 : 선택 정렬 - 정렬문제는 Sorting problem으로 n개의 숫자들의 배열을 입력으로 받게 되면 입력된 숫자의 배열이 특정 조건을 만족하도록 다시 나열한 결과를 출력으로 나타내는 문제이다. 특정 조건으로는 오름차순이나 내림차순과 같은 것이 예시가 될 수 있다. 만약 input으로 과 같이 들어오게 된다면 오름차순으로 재배열을 시켜서 내보내는 문제일 경우 output으로 값을 가지게 만들어주는 것이다. 정렬문제 중에서 선택정렬 알고리즘이 있다. 이를 알고리즘 설명과 정확성 증명, 성능 분석을 통해 알고리즘에 알아보도록 하자. 선택정렬은 말 그대로 선택하여 정렬하는 알고리즘이다. 여기서 중요한 핵심은 무엇을 선택해서 정렬을 할 것인가에 대한 의문이 생긴다. 최솟값을 선택하여.. 2017. 6. 4.
리눅스 1장 - file & directory - 리눅스 1장- file & directory - 리눅스는 터미널이라는 공간을 통해서 제어를 하게 된다. 터미널에서 다양한 종류의 명령어를 사용할 수 있는데 처음에는 가장 많이 사용할 수 있는 file과 directory에 대한 제어와 관리를 하는데 사용하는 명령어에 대해서 학습할 것이다. 리눅스는 문자로 된 명령을 사용하여 제어하게 된다. 이러한 방식을 CLI라고 한다. CLI는 command line interface의 약자이다. 이와 다르게 Window와 같은 운영체제는 아이콘을 통해서 제어를 하게 되는데 이런 방식을 GUI 방식이라고 한다. 제일 보편적으로 사용되는 명령어부터 살펴보자. ls라는 명령어는 현재 위치하고 있는 directory의 파일들의 목록을 보여주게 된다. ls-al이라는 명령어도.. 2017. 6. 4.
머신러닝 실습 with Tensorflow 1장 - linear regression - 머신러닝 실습 with Tensorflow 1장- linear regression - 머신러닝에 대한 이론적인 부분은 이미 공부한 후 이에 대한 부분을 실습하여 실제로 실행시켜보는 것에 중점으로 학습할 것이다. 이에 대한 도구로 tensorflow라는 tool을 사용할 것이다. 또한 python의 언어를 바탕으로 제작된다. tensorflow는 머신러닝을 위한 다양한 함수를 내포하고 있어 보다 편하게 머신러닝을 구현할 수 있게 구성되어 있다. tensorflow는 3가지의 과정으로 구성된다. Tensorflow의 도구를 이용해 그래프를 만드는 과정, sees.run 함수를 통해 데이터를 넣어주거나 그래프를 가동시키는 과정, 마지막으로 결과 값을 내보내거나 그래프의 변수를 업데이트 시키는 과정이다. Lin.. 2017. 6. 3.
알고리즘 1장 - 알고리즘 개요 - 알고리즘 1장- 알고리즘 개요 - 컴퓨터를 공부할 때 필수적으로 공부하는 분야 중 하나가 바로 알고리즘이다. 또한 다양한 곳에서 알고리즘을 활용한 문제나 대회들이 존재한다. 알고리즘은 크게 문제와 해결 방법으로 구성되어 있다고 할 수 있다. 문제는 알고리즘이 나와야하는 이유이고 해결 방법은 알고리즘의 부분이라고 할 수 있다. 이 때 효율성을 고려하게 되는데 알고리즘이 문제의 해결 방법으로 적절한지에 대한 판단이 필요하다. 또한 알고리즘은 단계적으로 이루어진다. 한 단계씩 넘어가면서 문제 해결에 도달하게 된다. 컴퓨터 알고리즘은 컴퓨터를 이용하여 주어진 문제를 풀기 위한 방법이나 절차이다. 앞에서 말한 문제, 해결 방법, 효율성, 단계적 이라는 단어들을 모두 포함하고 있는 어휘이다. 컴퓨터를 이용해서 어떤.. 2017. 6. 3.
머신러닝(Machine Learning) 15장 - ConvNet(Convolutional Neural Network) - 머신러닝(Machine Learning) 15장- ConvNet(Convolutional Neural Network) - Neural Network를 구성하는 방식은 여러 가지로 나눌 수 있다. 일렬로 regression을 나열할 수도 있고 입력 값을 여러 개를 받은 후 이를 모아서 다른 결과 값으로 나타나게 하는 방식이 있을 수 있다. 전자의 경우 앞에서 계속 배웠던 모델의 형태이고 후자의 경우는 이번에 학습할 ConvNet이라고 할 수 있다. ConvNet의 경우 처음에 고양이 실험으로부터 고안되었다. 고양이가 모니터 화면에서 움직이는 막대를 보는데 특정 부분에 따라 인식하는 뉴런이 다르다는 결론이 나왔다. 따라서 여러 개의 입력 값을 다르게 받아서 전체의 막대를 인식하는 것이다. 처음 특정 이미지가.. 2017. 6. 2.
머신러닝(Machine Learning) 14장 - 딥러닝 weight 초기화의 중요성 - 머신러닝(Machine Learning) 14장- 딥러닝 weight 초기화의 중요성 - 처음 딥러닝을 학습시킬 때 임의의 Weight 값을 넣게 된다. Weight이라는 값은 학습에 의해 계속 값을 바꾸어 가며 Cost function이 가장 작은 값을 가지게 하는 weight 값을 나타나게 된다. 그런데 같은 구조의 딥러닝을 실행시켜도 weight 값의 초기 값에 따라 cost function의 값을 최소화시키는데 걸리는 시간과 데이터의 수가 다르게 나타날 수 있다. 다음의 모델들은 sigmoid와 ReLU의 함수를 사용한 각각의 데이터 모델을 나타내는데 ReLU의 경우 하나의 모델은 바로 cost function이 최소화 되는 과정을 가는 반면에 다른 모델은 더 많은 데이터가 들어가야만 최소화가 되.. 2017. 6. 1.
머신러닝(Machine Learning) 13장 - ReLU function - 머신러닝(Machine Learning) 13장- ReLU function - XOR 문제를 해결하는 방법으로 Multiple logistic regression이라는 방법을 사용하는 Neural Network를 사용하였다. Neural Network는 logistic regression을 사용하는 만큼 sigmoid function을 이용하여 결과 값을 도출하였다. sigmoid function은 값의 결과를 0과 1로 나타나게 되므로 Activation function이라고 불렸다. 특정 범위가 되면 활성화되고 아니면 비활성화가 되는 것을 나타내기 때문이다. Neural Network는 layer로 regression의 부분을 나누게 된다. 맨 처음 입력 값이 들어오는 부분은 Input layer라고.. 2017. 6. 1.
머신러닝(Machine Learning) 12장 - XOR 문제 딥러닝으로 풀기(Backpropagation) - 머신러닝(Machine Learning) 12장- XOR 문제 딥러닝으로 풀기(Backpropagation) - 앞장에서 딥러닝의 기본 개념에 대해서 살펴보았는데 XOR 문제가 발생하였다. 비교 연산을 하는 경우 AND의 문제나 OR의 문제는 하나의 logistic regression을 사용하게 되면 쉽게 해결 할 수 있었다. 하지만 XOR의 경우에는 하나의 logistic regression을 이용하면 해결하는 방법이 없었다. 이 때 사용한 방법이 logistic regression을 multiple로 사용하는 방법이다. 이는 Neural Network의 형태로 나타나게 된다. 이런 경우 풀 수 있는 가능성은 있지만 학습에 대한 불가능이 나타나게 되었다. 우선 XOR 문제를 Neural network를.. 2017. 5. 30.
파이썬(python) 강의 10장 - 객체와 변수(데이터) - 파이썬(python) 강의 10장- 객체와 변수(데이터) - 파이썬의 class를 사용하여 객체를 쓰게 되면 유용한 듯 보이지만 하나의 큰 문제를 발견할 수 있다. 그건 바로 하나의 class로 선언된 객체의 변수를 밖에서 마음껏 바꿀 수 있다는 것이다. 이게 왜 문제가 되는지 궁금할 수도 있다. 그래서 이에 대해 설명을 하고 이를 방지할 수 있는 방법을 설명하고자 한다. 변수는 매우 중요한 자료이다. 모듈을 사용하지 않고 class를 이용하여 객체를 만드는 이유 중 하나가 함수는 같은데 변수를 다양하게 사용하기 위해서 이다. 그러므로 변수는 객체를 구성하는 종류에서 매우 중요하다고 할 수 있다. 그런데 우리가 지정해주지 않았는데도 class 외부 즉 객체가 지정해주는 값 이외에 다른 임의의 값이 들어오.. 2017. 5. 29.
파이썬(python) 강의 9장 - 객체 지향 프로그래밍 - 파이썬(python) 강의 9장- 객체 지향 프로그래밍 - 객체 지향 프로그래밍은 Object Oriented Programming으로 객체를 통해 프로그래밍을 동작시키는 방식을 말한다. 앞의 장에서 모듈에 대해서 배웠다. 모듈은 일종의 수납공간과 같은 형태로 우리가 원하는 함수를 모듈이라는 공간에 잘 보관하여 사용하고 싶을 때 사용을 할 수 있게 해주는 도구이다. 이러한 모듈이라는 개념에서 조금 더 다양한 기능을 수행할 수 있게 해주는 것이 바로 객체라는 도구이다. 객체는 class와 instance로 이루어져 있다. class는 모듈과 같은 수납공간으로 이해할 수 있다. 하지만 class는 함수뿐만 아니라 연관된 변수 또한 포함하고 있는 공간이다. 우리는 이 class를 바로 사용하지 않고 복제를 하.. 2017. 5. 29.