분류 전체보기
-
[ML] Entropy와 Likelihood관점에서의 Loss functionML&DL 이야기/ML 2023. 10. 2. 10:04
Entropy와 Cross Entropy Entropy 정보의 불확실성의 척도 정보를 표현하는데 있어서 필요한 최소 자원량, 확률이 적은 애를 길게 코딩하고 확률이 큰 아이를 짧게 코딩해라 길이와 확률은 반비례하기에 -log로 표현됨. H(x)는 x에 따른 코드 길이에 대한 확률의 기댓값으로 표현된다. 정보의 최소 자원량이기에 lower bound를 제공하는 식이라 생각하면 된다. 확률이 균등하면 엔트로피는 최대이다(discrete 일때) Cross-entropy 실제 분포인 q 를 모르고, 모델링을 하여 q 분포를 예측하고자 하는 것이다. 예측 모델링을 통해 구한 분포를 p(x) 라고 해보자. 실제 분포인 q를 예측하는 p 분포를 만들었을 때, 이 때 cross-entropy 는 아래와 같이 정의된다...
-
[C 언어 기초 정리 09] 컴파일과 gcc , 헤더 파일(.h)개발 이야기/C 2023. 9. 30. 13:20
헤더파일(.h) c에서 함수는 사용되기 전에 먼저 함수의 원형이 선언되어야한다. 즉, c파일을 따로 만들었을 때, 해당 함수(c내의)와 관련된 정보를 가지고 있는 파일이 필요한데 이를 헤더 파일이라고 한다. 즉, 우리가 include 하는 .h 파일이 헤더파일이다. 사용자 헤더 파일은 아래와 같이 작성된다. float muller(float (*func)(float), float x0, float x2, float xacc); 위의 예시는 muller라는 .c 파일에 관한 헤더파일이다. 즉, 우리의 c파일 내에서 새로 작성한 함수를 선언하면 된다. gcc를 이용한 컴파일 gcc는 유닉스 계열에서 주로 사용하는 C/C++ 컴파일 도구로 개발되었으나 이후 objectve c, 파스칼, 에이다 등을 지원하면서..
-
[C 언어 기초 정리 08] 구조체(Struct), union, enum개발 이야기/C 2023. 9. 29. 22:35
class의 확장 전 버전이라고 생각하면 된다. Class와 차이는 Class는 변수 뿐만 아니라 함수까지도 포함 가능하지만, Struct는 변수만 포함 가능하다. 구조체를 구성하는 변수는 동일하게 member라고 한다. 구조체 정의와 선언 C언어에서 구조체는 struct 키워드를 사용하여 다음과 같이 정의한다. struct book { char title[30]; char author[20]; int price; }; sturct book book1; book1 = {.tilte="C언어", .author="Adam", .price=2000} 이우 선언과 초기화는 아래와 같이 이루어진다. 멤버변수 접근은 구조체이름.멤버변수이름으로 접근한다. 추가적으로 포인터 또한 이용가은한데 이때 구조체는 배열과 다르..
-
[C 언어 기초 정리 07] Call by value & Call by reference와 메모리 구조개발 이야기/C 2023. 9. 29. 21:10
Call by value & Call by reference 함수를 호출 시 필요한 데이터를 인자로 전달하는 2가지 방법이다. call by value의 경우 값을 복사하여 전달하고, call by reference의 경우 데이터의 주소를 복사하여 전달한다. 전자의 경우는 원본의 값이 변경되지 않고, 후자의 경우 값이 변경된다. Call by value 값에 의한 전달 방법은 인수로 전달되는 변수가 가지고 있는 값을 복사하여 전달하는 방식으로 완전히 별개의 변수로 취급된다. 즉, 함수내에서 값을 변경하더라도 이것이 전혀 원 인자에 영향을 주지 않는다. #include void swap(int *x, int *y) { // 주소에 저장된 실제값들을 교환 int temp = *x; *x = *y; *y = ..
-
[C 언어 기초 정리 06] 포인터개발 이야기/C 2023. 9. 29. 20:48
포인터란 데이터의 주소정보의 개념이다. 앞에 변수에서 이야기했듯이 C의 각 자료형들은 각자 다른 메모리크기를 가진다. 하지만, 이들도 시작주소가 있는데 주소값이란 이런 변수들이 저장되어있는 메모리의 시작주소를 말한다. 포인터란? 포인터란 메모리의 주소값을 저장하는 변수이다(주소를 저장하는 자료형) int n = 100; // 변수의 선언 int *ptr = &n; // 포인터의 선언 포인터와 관련된 연산자는 두개로 아래와 같다. - &: 주소연산자로 해당 변수의 주소값을 반환(변수 앞에 사용) - *: 참조연산자로 주소에 저장된 값을 반환(포인터 앞에 사용) 즉 &연산은 해당 변수 -> 주소이고 *연산은 해당 주소->변수(주소지를 찾아가 그에 해당하는 변수)를 찾아준다 이는 다중포인터 연산에서도 동일하게..
-
[C 언어 기초 정리 05] 함수개발 이야기/C 2023. 9. 28. 21:12
함수란? function이라고 불리며, 하나의 작업을 수행하기 위해 설계된 코드의 집합, 재사용성을 고려하여 작성된다. input과 return으로 구성된다. 함수의 정의 1. 반환 타입(return type) : 함수가 모든 작업을 마치고 반환하는 데이터의 타입을 명시합니다. 2. 함수 이름 : 함수를 호출하기 위한 이름을 명시합니다. 3. 매개변수 목록(parameters) : 함수 호출 시에 전달되는 인수의 값을 저장할 변수들을 명시합니다. 4. 함수 몸체 : 함수의 고유 기능을 수행하는 명령문의 집합입니다. 인자는 여러개를 받을 수 있지만, 반환할 수 있는 값은 1이하이다. #include int bigNum(int num01, int num02) // 함수의 정의 { if (num01 >= nu..
-
[C 언어 기초 정리 04] Array, 문자열개발 이야기/C 2023. 9. 23. 00:23
배열과 문자열은 메모리와 함께 연관하여 알아두면 좋고, 이후에 나오는 포인터 개념과도 연관된다. 배열의 경우에도 다양한 프로그래밍 언어에서 차이는 있지만 대다수 공통된 특징을 가지기에(0부터 시작한다던가, 기타 문법이나) 여기서도 간단히 문법적인 부분만 짚고 넘어가려고 한다. 1차원 배열 C언어에서는 배열을 선언만 하고 초기화하지 않으면, 각 배열 요소에 아무런 의미를 가지지 않는 쓰레기값이 저장되어 있게 되기에 사용에 유의해야한다, int array[3] //배열의 크기가 3 array[0]=1 array[1]=2 array[2]=3 //선언과 동시에 초기화 하기 int array[3] = {1,2,3} //sizeof->배열의 길이를 반환하는 것이 아닌 메모리의 크기를 반환 //len을 알려면 하나의..
-
[C 언어 기초 정리 03] if, else, for, while개발 이야기/C 2023. 9. 22. 17:42
C 프로그램은 절차적 프로그램(procedural program) 또는 명령형 프로그램(Imperative program)에 속한다. 즉, C 프로그램의 명령문은 처음부터 끝까지 순서대로 실행됩니다. 이런 명령문들은 모든 프로그래밍 언어에서 거의 공통적인 이름과 역할을 수행하기에 그 문법에 관해서만 간단히 짚고 넘어가려고 한다. 조건문 IF int num = 3; if (num < 5) { printf("입력하신 수는 5보다 작습니다.\n"); } if-else if (조건식) { 조건식의 결과가 참일 때 실행하고자 하는 명령문; } else { 조건식의 결과가 거짓일 때 실행하고자 하는 명령문; } if-else if- if int num = 7; if (num < 5) { printf("입력하신 수는..