Upon being instantiated, why is my object moving upwards ?

Everytime I instantiate a bird object, I want it to only move continuously in -Z direction. Currently it also moves upwards in Y. I don’t want this upward motion to happen. Any reasons that this might be happening ? Also note that the Spawner gameobject as well as the Bird prefab have no rotation values on any axis too.

Script on GameObject that spawns the bird

public GameObject bird;
public float startFiringAfter;
public float fireEvery;

void Start () {
		InvokeRepeating ("firebird", startFiringAfter, fireEvery);
	}

void firebird ()
	{
		GameObject clone; 
		clone = Instantiate(bird, transform.position, transform.rotation) as GameObject; 
	}

Script on the Bird GameObject that is spawned

	public float speed;

	void Update () {
		transform.Translate(new Vector3 (0, 0, -speed) * Time.deltaTime);
	}

Remove the script from the bird and attach a rigidbody. Then use something like this:
float speed = 1.0f;

void firebird ()
     {
         GameObject clone; 
         clone = Instantiate(bird, transform.position, transform.rotation) as GameObject;
         close.AddForce(Vector3.forward * speed);
     }

Using the below fixed my problem.

transform.Translate(Vector3.back * speed * Time.deltaTime);